@greenpandastudios/aug-cli 0.19.0 → 0.20.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/README.md +9 -6
- package/THIRD_PARTY_NOTICES.md +4 -0
- package/bin/aug.mjs +12 -2
- package/docs/about.md +27 -0
- package/docs/api/crypto.md +103 -69
- package/docs/api/io.md +35 -33
- package/docs/api/json.md +3 -3
- package/docs/api/memory.md +23 -19
- package/docs/api/time.md +10 -9
- package/docs/api/web.md +33 -38
- package/docs/compatibility.md +3 -3
- package/docs/contributing-benchmarks.md +38 -0
- package/docs/dev-containers.md +95 -0
- package/docs/diagnostics.md +15 -5
- package/docs/docker.md +174 -12
- package/docs/editor.md +35 -0
- package/docs/example-projects.json +206 -24
- package/docs/examples/approved-design/counters.md +34 -126
- package/docs/examples/approved-design/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/approved-design/domain/app.md +13 -77
- package/docs/examples/approved-design/domain/export.md +5 -19
- package/docs/examples/approved-design/domain/models.md +4 -23
- package/docs/examples/approved-design/domain/numbers.md +24 -114
- package/docs/examples/approved-design/index.md +16 -7
- package/docs/examples/approved-design/main.md +19 -96
- package/docs/examples/benchmark/index.md +6 -5
- package/docs/examples/benchmark/main.md +7 -35
- package/docs/examples/cli-args/index.md +6 -5
- package/docs/examples/cli-args/main.md +6 -31
- package/docs/examples/collections/index.md +6 -5
- package/docs/examples/collections/main.md +7 -35
- package/docs/examples/collections-benchmark/index.md +6 -5
- package/docs/examples/collections-benchmark/main.md +7 -35
- package/docs/examples/cpu-benchmark/index.md +6 -5
- package/docs/examples/cpu-benchmark/main.md +5 -24
- package/docs/examples/developer-workflow/calculator.md +39 -186
- package/docs/examples/developer-workflow/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/developer-workflow/index.md +16 -7
- package/docs/examples/developer-workflow/logging/console.md +10 -56
- package/docs/examples/developer-workflow/logging/export.md +4 -14
- package/docs/examples/developer-workflow/logging/logger.md +7 -43
- package/docs/examples/developer-workflow/main.md +17 -69
- package/docs/examples/drop/index.md +6 -5
- package/docs/examples/drop/main.md +7 -27
- package/docs/examples/drop/resource.md +7 -30
- package/docs/examples/errors/errors.md +7 -27
- package/docs/examples/errors/index.md +6 -5
- package/docs/examples/errors/main.md +7 -28
- package/docs/examples/ffi/index.md +6 -5
- package/docs/examples/ffi/main.md +6 -20
- package/docs/examples/ffi/native.md +8 -34
- package/docs/examples/generic-di/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/generic-di/index.md +6 -5
- package/docs/examples/generic-di/main.md +9 -39
- package/docs/examples/generic-di/types.md +23 -92
- package/docs/examples/generics/index.md +6 -5
- package/docs/examples/generics/main.md +10 -47
- package/docs/examples/generics/types.md +25 -100
- package/docs/examples/hello/app/export.md +4 -12
- package/docs/examples/hello/app/greeter.md +13 -91
- package/docs/examples/hello/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/hello/index.md +17 -6
- package/docs/examples/hello/logging/console.md +10 -54
- package/docs/examples/hello/logging/export.md +4 -14
- package/docs/examples/hello/logging/logger.md +7 -45
- package/docs/examples/hello/main.md +9 -39
- package/docs/examples/http-benchmark/index.md +6 -5
- package/docs/examples/http-benchmark/main.md +6 -20
- package/docs/examples/http-benchmark/routes.md +9 -31
- package/docs/examples/index.md +46 -29
- package/docs/examples/interceptors/app.md +20 -139
- package/docs/examples/interceptors/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/interceptors/index.md +6 -5
- package/docs/examples/interceptors/interceptors.md +24 -148
- package/docs/examples/interceptors/logging.md +13 -76
- package/docs/examples/interceptors/main.md +10 -65
- package/docs/examples/json-benchmark/data.md +4 -20
- package/docs/examples/json-benchmark/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/json-benchmark/index.md +7 -5
- package/docs/examples/json-benchmark/main-yaml.md +20 -0
- package/docs/examples/json-benchmark/main.md +10 -49
- package/docs/examples/new-syntax/console.md +10 -52
- package/docs/examples/new-syntax/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/new-syntax/greeter.md +13 -71
- package/docs/examples/new-syntax/index.md +6 -5
- package/docs/examples/new-syntax/logger.md +7 -43
- package/docs/examples/new-syntax/main.md +10 -53
- package/docs/examples/new-syntax/math.md +6 -24
- package/docs/examples/oidc-login/client/contracts.md +10 -61
- package/docs/examples/oidc-login/client/endpoints.md +32 -154
- package/docs/examples/oidc-login/client/export.md +5 -23
- package/docs/examples/oidc-login/client/login.md +234 -344
- package/docs/examples/oidc-login/client/logout.md +38 -143
- package/docs/examples/oidc-login/client/protocol.md +183 -304
- package/docs/examples/oidc-login/client/session.md +41 -149
- package/docs/examples/oidc-login/client/views.md +13 -58
- package/docs/examples/oidc-login/common/export.md +6 -26
- package/docs/examples/oidc-login/common/headers.md +42 -72
- package/docs/examples/oidc-login/common/keys.md +40 -164
- package/docs/examples/oidc-login/common/settings.md +24 -40
- package/docs/examples/oidc-login/common/views.md +7 -28
- package/docs/examples/oidc-login/dependencies/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.md +205 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +67 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +267 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.md +415 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.md +271 -0
- package/docs/examples/oidc-login/dependencies/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.md +89 -0
- package/docs/examples/oidc-login/index.md +8 -7
- package/docs/examples/oidc-login/main-yaml.md +7 -0
- package/docs/examples/oidc-login/main.md +26 -153
- package/docs/examples/oidc-login/provider/authorization.md +232 -275
- package/docs/examples/oidc-login/provider/contracts.md +24 -146
- package/docs/examples/oidc-login/provider/credentials.md +24 -57
- package/docs/examples/oidc-login/provider/discovery.md +48 -122
- package/docs/examples/oidc-login/provider/export.md +11 -37
- package/docs/examples/oidc-login/provider/token.md +159 -237
- package/docs/examples/oidc-login/provider/userinfo.md +47 -102
- package/docs/examples/oidc-login/provider/views.md +13 -53
- package/docs/examples/ownership/counter.md +17 -63
- package/docs/examples/ownership/index.md +6 -5
- package/docs/examples/ownership/main.md +7 -30
- package/docs/examples/ownership-transfer/dependencies/august/0.20.1/io/contracts.md +178 -0
- package/docs/examples/ownership-transfer/index.md +6 -5
- package/docs/examples/ownership-transfer/main.md +10 -52
- package/docs/examples/ownership-transfer/resource.md +15 -67
- package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +12 -50
- package/docs/examples/packages-app/index.md +7 -6
- package/docs/examples/packages-app/main.md +7 -25
- package/docs/examples/packages-math/aug-package-json.md +1 -1
- package/docs/examples/packages-math/index.md +7 -6
- package/docs/examples/packages-math/src/arithmetic.md +12 -50
- package/docs/examples/packages-math/src/export.md +4 -12
- package/docs/examples/startup-benchmark/index.md +6 -5
- package/docs/examples/startup-benchmark/main.md +5 -17
- package/docs/examples/visibility/counter.md +19 -67
- package/docs/examples/visibility/index.md +6 -5
- package/docs/examples/visibility/main.md +7 -31
- package/docs/examples/weather-api/forecasts.md +168 -0
- package/docs/examples/weather-api/index.md +42 -0
- package/docs/examples/weather-api/main-yaml.md +21 -0
- package/docs/examples/weather-api/main.md +65 -0
- package/docs/examples.json +10 -0
- package/docs/getting-started.md +105 -2
- package/docs/grammar.md +6 -4
- package/docs/guides/change-a-module.md +64 -0
- package/docs/guides/index.md +27 -0
- package/docs/index.md +51 -29
- package/docs/language-conformance.md +1 -1
- package/docs/language-constructs.md +22 -22
- package/docs/language-design-audit.md +1 -1
- package/docs/learn/data-and-errors.md +77 -0
- package/docs/learn/index.md +30 -0
- package/docs/learn/modules-and-dependencies.md +73 -0
- package/docs/learn/state-and-tests.md +71 -0
- package/docs/learn/values-and-functions.md +62 -0
- package/docs/lesson-failures.json +8 -0
- package/docs/maintaining-docs.md +16 -4
- package/docs/packages.md +72 -126
- package/docs/performance.md +13 -41
- package/docs/production-readiness.md +5 -4
- package/docs/public/downloads/approved-design.zip +0 -0
- package/docs/public/downloads/benchmark.zip +0 -0
- package/docs/public/downloads/cli-args.zip +0 -0
- package/docs/public/downloads/collections-benchmark.zip +0 -0
- package/docs/public/downloads/collections.zip +0 -0
- package/docs/public/downloads/cpu-benchmark.zip +0 -0
- package/docs/public/downloads/developer-workflow.zip +0 -0
- package/docs/public/downloads/drop.zip +0 -0
- package/docs/public/downloads/errors.zip +0 -0
- package/docs/public/downloads/ffi.zip +0 -0
- package/docs/public/downloads/generic-di.zip +0 -0
- package/docs/public/downloads/generics.zip +0 -0
- package/docs/public/downloads/hello.zip +0 -0
- package/docs/public/downloads/http-benchmark.zip +0 -0
- package/docs/public/downloads/interceptors.zip +0 -0
- package/docs/public/downloads/json-benchmark.zip +0 -0
- package/docs/public/downloads/new-syntax.zip +0 -0
- package/docs/public/downloads/oidc-login.zip +0 -0
- package/docs/public/downloads/ownership-transfer.zip +0 -0
- package/docs/public/downloads/ownership.zip +0 -0
- package/docs/public/downloads/packages-app.zip +0 -0
- package/docs/public/downloads/packages-math.zip +0 -0
- package/docs/public/downloads/startup-benchmark.zip +0 -0
- package/docs/public/downloads/visibility.zip +0 -0
- package/docs/public/downloads/weather-api.zip +0 -0
- package/docs/reference.md +23 -17
- package/docs/releasing.md +29 -15
- package/docs/research/code-to-natural-language.md +108 -0
- package/docs/research/ecosystem-workflow.md +41 -0
- package/docs/research/wiki-editorial-design.md +71 -0
- package/docs/roadmap.md +1 -1
- package/docs/specifications.md +27 -11
- package/docs/testing.md +19 -5
- package/docs/tooling.md +25 -12
- package/docs/weather-api.md +65 -0
- package/docs/web.md +50 -18
- package/docs/writing-docs.md +49 -0
- package/examples/{hello/.aug-spec/august/0.19.0 → approved-design/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/approved-design/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/approved-design/.aug-spec/manifest.json +3 -3
- package/examples/approved-design/counters.aug +5 -4
- package/examples/approved-design/counters.aug.md +25 -132
- package/examples/approved-design/domain/app.aug +2 -1
- package/examples/approved-design/domain/app.aug.md +10 -80
- package/examples/approved-design/domain/export.aug +1 -0
- package/examples/approved-design/domain/export.aug.md +4 -20
- package/examples/approved-design/domain/models.aug +1 -0
- package/examples/approved-design/domain/models.aug.md +3 -25
- package/examples/approved-design/domain/numbers.aug +3 -2
- package/examples/approved-design/domain/numbers.aug.md +19 -116
- package/examples/approved-design/main.aug +1 -0
- package/examples/approved-design/main.aug.md +12 -95
- package/examples/benchmark/.aug-spec/manifest.json +1 -1
- package/examples/benchmark/main.aug +1 -0
- package/examples/benchmark/main.aug.md +6 -36
- package/examples/cli-args/.aug-spec/manifest.json +1 -1
- package/examples/cli-args/main.aug +1 -0
- package/examples/cli-args/main.aug.md +5 -32
- package/examples/collections/.aug-spec/manifest.json +1 -1
- package/examples/collections/main.aug +1 -0
- package/examples/collections/main.aug.md +6 -36
- package/examples/{generic-di/.aug-spec/august/0.19.0 → developer-workflow/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/developer-workflow/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/developer-workflow/.aug-spec/manifest.json +3 -3
- package/examples/developer-workflow/calculator.aug +3 -2
- package/examples/developer-workflow/calculator.aug.md +28 -189
- package/examples/developer-workflow/logging/console.aug +2 -1
- package/examples/developer-workflow/logging/console.aug.md +7 -57
- package/examples/developer-workflow/logging/export.aug +1 -0
- package/examples/developer-workflow/logging/export.aug.md +3 -15
- package/examples/developer-workflow/logging/logger.aug +1 -0
- package/examples/developer-workflow/logging/logger.aug.md +6 -46
- package/examples/developer-workflow/main.aug +1 -0
- package/examples/developer-workflow/main.aug.md +10 -68
- package/examples/drop/.aug-spec/manifest.json +1 -1
- package/examples/drop/main.aug +1 -0
- package/examples/drop/main.aug.md +6 -28
- package/examples/drop/resource.aug +1 -0
- package/examples/drop/resource.aug.md +6 -34
- package/examples/errors/.aug-spec/manifest.json +1 -1
- package/examples/errors/errors.aug +2 -1
- package/examples/errors/errors.aug.md +4 -27
- package/examples/errors/main.aug +1 -0
- package/examples/errors/main.aug.md +6 -29
- package/examples/ffi/.aug-spec/manifest.json +1 -1
- package/examples/ffi/main.aug +1 -0
- package/examples/ffi/main.aug.md +5 -21
- package/examples/ffi/native.aug +2 -1
- package/examples/ffi/native.aug.md +5 -35
- package/examples/{approved-design/.aug-spec/august/0.19.0 → generic-di/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/generic-di/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/generic-di/.aug-spec/manifest.json +3 -3
- package/examples/generic-di/main.aug +1 -0
- package/examples/generic-di/main.aug.md +8 -40
- package/examples/generic-di/types.aug +3 -2
- package/examples/generic-di/types.aug.md +18 -97
- package/examples/generics/.aug-spec/manifest.json +1 -1
- package/examples/generics/main.aug +1 -0
- package/examples/generics/main.aug.md +9 -48
- package/examples/generics/types.aug +4 -3
- package/examples/generics/types.aug.md +18 -104
- package/examples/{developer-workflow/.aug-spec/august/0.19.0 → hello/.aug-spec/august/0.20.1}/io/contracts.aug +4 -3
- package/examples/hello/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/hello/.aug-spec/manifest.json +3 -3
- package/examples/hello/app/export.aug +1 -0
- package/examples/hello/app/export.aug.md +3 -13
- package/examples/hello/app/greeter.aug +2 -1
- package/examples/hello/app/greeter.aug.md +10 -94
- package/examples/hello/logging/console.aug +2 -1
- package/examples/hello/logging/console.aug.md +7 -55
- package/examples/hello/logging/export.aug +1 -0
- package/examples/hello/logging/export.aug.md +3 -15
- package/examples/hello/logging/logger.aug +1 -0
- package/examples/hello/logging/logger.aug.md +6 -48
- package/examples/hello/main.aug +1 -0
- package/examples/hello/main.aug.md +8 -40
- package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/interceptors/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/interceptors/.aug-spec/manifest.json +3 -3
- package/examples/interceptors/app.aug +3 -2
- package/examples/interceptors/app.aug.md +15 -141
- package/examples/interceptors/interceptors.aug +3 -2
- package/examples/interceptors/interceptors.aug.md +19 -152
- package/examples/interceptors/logging.aug +2 -1
- package/examples/interceptors/logging.aug.md +10 -79
- package/examples/interceptors/main.aug +1 -0
- package/examples/interceptors/main.aug.md +9 -66
- package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/new-syntax/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/new-syntax/.aug-spec/manifest.json +3 -3
- package/examples/new-syntax/console.aug +2 -1
- package/examples/new-syntax/console.aug.md +7 -53
- package/examples/new-syntax/greeter.aug +2 -1
- package/examples/new-syntax/greeter.aug.md +10 -74
- package/examples/new-syntax/logger.aug +1 -0
- package/examples/new-syntax/logger.aug.md +6 -46
- package/examples/new-syntax/main.aug +1 -0
- package/examples/new-syntax/main.aug.md +9 -54
- package/examples/new-syntax/math.aug +2 -1
- package/examples/new-syntax/math.aug.md +3 -24
- package/examples/oidc-login/.aug-spec/manifest.json +13 -13
- package/examples/oidc-login/.aug-spec/packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/store.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +17 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +125 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/contracts.aug +12 -11
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/contracts.aug.md +244 -0
- package/examples/oidc-login/.aug-spec/{august/0.19.0/crypto → packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40}/jose.aug +6 -5
- package/examples/oidc-login/.aug-spec/packages/@git/url_9ef654c66d34ab8f5527/0.0.0-git.b14a0f9aa41f1ce58bd51133bcdc424033e40d40/jose.aug.md +71 -0
- package/examples/oidc-login/.aug-spec/packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301/contracts.aug.md +30 -0
- package/examples/oidc-login/aug.lock.json +100 -0
- package/examples/oidc-login/client/contracts.aug +1 -0
- package/examples/oidc-login/client/contracts.aug.md +9 -66
- package/examples/oidc-login/client/endpoints.aug +6 -5
- package/examples/oidc-login/client/endpoints.aug.md +13 -145
- package/examples/oidc-login/client/export.aug +1 -0
- package/examples/oidc-login/client/export.aug.md +4 -24
- package/examples/oidc-login/client/login.aug +7 -6
- package/examples/oidc-login/client/login.aug.md +25 -303
- package/examples/oidc-login/client/logout.aug +5 -4
- package/examples/oidc-login/client/logout.aug.md +13 -135
- package/examples/oidc-login/client/protocol.aug +7 -6
- package/examples/oidc-login/client/protocol.aug.md +36 -283
- package/examples/oidc-login/client/session.aug +5 -4
- package/examples/oidc-login/client/session.aug.md +12 -139
- package/examples/oidc-login/client/views.aug +3 -2
- package/examples/oidc-login/client/views.aug.md +8 -57
- package/examples/oidc-login/common/export.aug +1 -0
- package/examples/oidc-login/common/export.aug.md +5 -27
- package/examples/oidc-login/common/headers.aug +4 -3
- package/examples/oidc-login/common/headers.aug.md +9 -67
- package/examples/oidc-login/common/keys.aug +6 -5
- package/examples/oidc-login/common/keys.aug.md +29 -165
- package/examples/oidc-login/common/settings.aug +2 -1
- package/examples/oidc-login/common/settings.aug.md +5 -39
- package/examples/oidc-login/common/views.aug +2 -1
- package/examples/oidc-login/common/views.aug.md +4 -28
- package/examples/oidc-login/main.aug +6 -16
- package/examples/oidc-login/main.aug.md +17 -146
- package/examples/oidc-login/main.yaml +7 -0
- package/examples/oidc-login/provider/authorization.aug +7 -6
- package/examples/oidc-login/provider/authorization.aug.md +23 -238
- package/examples/oidc-login/provider/contracts.aug +1 -0
- package/examples/oidc-login/provider/contracts.aug.md +23 -158
- package/examples/oidc-login/provider/credentials.aug +3 -2
- package/examples/oidc-login/provider/credentials.aug.md +9 -53
- package/examples/oidc-login/provider/discovery.aug +4 -3
- package/examples/oidc-login/provider/discovery.aug.md +11 -118
- package/examples/oidc-login/provider/export.aug +1 -0
- package/examples/oidc-login/provider/export.aug.md +6 -34
- package/examples/oidc-login/provider/token.aug +6 -5
- package/examples/oidc-login/provider/token.aug.md +16 -204
- package/examples/oidc-login/provider/userinfo.aug +4 -3
- package/examples/oidc-login/provider/userinfo.aug.md +10 -92
- package/examples/oidc-login/provider/views.aug +3 -2
- package/examples/oidc-login/provider/views.aug.md +8 -52
- package/examples/ownership/.aug-spec/manifest.json +1 -1
- package/examples/ownership/counter.aug +3 -2
- package/examples/ownership/counter.aug.md +12 -66
- package/examples/ownership/main.aug +1 -0
- package/examples/ownership/main.aug.md +6 -31
- package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug +37 -0
- package/examples/ownership-transfer/.aug-spec/august/0.20.1/io/contracts.aug.md +82 -0
- package/examples/ownership-transfer/.aug-spec/manifest.json +3 -3
- package/examples/ownership-transfer/main.aug +1 -0
- package/examples/ownership-transfer/main.aug.md +9 -53
- package/examples/ownership-transfer/resource.aug +2 -1
- package/examples/ownership-transfer/resource.aug.md +12 -71
- package/examples/packages/app/.aug-spec/manifest.json +1 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +2 -1
- package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +9 -51
- package/examples/packages/app/main.aug +1 -0
- package/examples/packages/app/main.aug.md +6 -26
- package/examples/packages/math/.aug-spec/manifest.json +1 -1
- package/examples/packages/math/aug-package.json +1 -1
- package/examples/packages/math/src/arithmetic.aug +2 -1
- package/examples/packages/math/src/arithmetic.aug.md +9 -51
- package/examples/packages/math/src/export.aug +1 -0
- package/examples/packages/math/src/export.aug.md +3 -13
- package/examples/visibility/.aug-spec/manifest.json +1 -1
- package/examples/visibility/counter.aug +4 -3
- package/examples/visibility/counter.aug.md +12 -68
- package/examples/visibility/main.aug +1 -0
- package/examples/visibility/main.aug.md +6 -32
- package/examples/weather-api/.aug-spec/manifest.json +8 -0
- package/examples/weather-api/AGENTS.md +17 -0
- package/examples/weather-api/README.md +19 -0
- package/examples/weather-api/forecasts.aug +47 -0
- package/examples/weather-api/forecasts.aug.md +32 -0
- package/examples/weather-api/main.aug +4 -0
- package/examples/weather-api/main.aug.md +15 -0
- package/examples/weather-api/main.yaml +5 -0
- package/examples/weather-api/weather.http +5 -0
- package/package.json +3 -4
- package/scripts/bootstrap-native.mjs +181 -106
- package/scripts/native-setup.mjs +98 -0
- package/scripts/native-toolchain.mjs +28 -0
- package/src/builtins.js +1 -1
- package/src/checker.js +259 -72
- package/src/cli.js +114 -20
- package/src/codegen.js +1 -1
- package/src/config.js +1 -1
- package/src/contracts.js +10 -0
- package/src/editor.js +71 -16
- package/src/fixes.js +90 -2
- package/src/formatter.js +19 -8
- package/src/git-packages.js +110 -0
- package/src/help.js +24 -23
- package/src/http-contracts.js +14 -0
- package/src/http-policies.js +5 -5
- package/src/libraries.js +1 -1
- package/src/lsp.js +14 -5
- package/src/native.js +19 -13
- package/src/navigation.js +4 -2
- package/src/openapi.js +5 -4
- package/src/package-locking.js +45 -0
- package/src/package-manager.js +251 -67
- package/src/parser.js +13 -5
- package/src/policies.js +3 -3
- package/src/project-init.js +78 -4
- package/src/project.js +9 -7
- package/src/semantic.js +46 -2
- package/src/snippets.js +59 -0
- package/src/spec-hints.js +56 -0
- package/src/spec-tree.js +241 -0
- package/src/spec.js +626 -303
- package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +0 -925
- package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +0 -434
- package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +0 -103
- package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +0 -374
- package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +0 -150
- package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +0 -532
- package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +0 -395
- package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +0 -791
- package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +0 -266
- package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +0 -55
- package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +0 -250
- package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +0 -96
- package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +0 -420
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +0 -36
- package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +0 -316
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/memory → packages/@git/url_0eb7c89453c87681ed15/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/store.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/json → packages/@git/url_2d3c37c690c0fa115be1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/web → packages/@git/url_897efafd565158fc4908/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
- /package/examples/oidc-login/.aug-spec/{august/0.19.0/time → packages/@git/url_c092cd151499c4e1d8a1/0.0.0-git.a39fc582565d4fca40be4f75fa304d71adc69301}/contracts.aug +0 -0
package/docs/releasing.md
CHANGED
|
@@ -5,7 +5,7 @@ All first-party packages and the extension use one compiler-compatible version.
|
|
|
5
5
|
## Verify and create artifacts
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
node scripts/version.mjs 0.
|
|
8
|
+
node scripts/version.mjs 0.20.1
|
|
9
9
|
npm ci
|
|
10
10
|
npm --prefix vscode ci
|
|
11
11
|
node scripts/bootstrap-native.mjs
|
|
@@ -18,6 +18,8 @@ npm run package:packages
|
|
|
18
18
|
npm run test:packages -- --native
|
|
19
19
|
npm run package:extension
|
|
20
20
|
node scripts/release-artifacts.mjs
|
|
21
|
+
node scripts/publish-release.mjs dist/release --verify-only
|
|
22
|
+
node scripts/publish-extension.mjs dist/release --verify-only
|
|
21
23
|
```
|
|
22
24
|
|
|
23
25
|
Update both changelogs and relevant guides, and commit regenerated docs. The final artifact step combines four installable npm tarballs, a VSIX, offline documentation, package metadata and SHA-256 checksums under `dist/release`. It excludes native caches, private credentials and application build output.
|
|
@@ -27,15 +29,21 @@ Update both changelogs and relevant guides, and commit regenerated docs. The fin
|
|
|
27
29
|
After verification and committing, create and push the version tag:
|
|
28
30
|
|
|
29
31
|
```sh
|
|
30
|
-
git tag v0.
|
|
31
|
-
git push origin main v0.
|
|
32
|
+
git tag v0.20.1
|
|
33
|
+
git push origin main v0.20.1
|
|
32
34
|
```
|
|
33
35
|
|
|
34
|
-
`release.yml` validates the tag against every manifest, runs compiler/native/docs/package gates, and uploads artifacts to a **draft prerelease**. Review the draft and publish it in GitHub Releases.
|
|
36
|
+
`release.yml` validates the tag against every manifest, runs compiler/native/docs/package gates, and uploads artifacts to a **draft prerelease**. Review the draft and publish it in GitHub Releases. Publishing starts **Publish npm packages** and **Publish VS Code extension** automatically. Each workflow deploys the archives attached to that release. Changing an asset after review invalidates its checksum.
|
|
37
|
+
|
|
38
|
+
`ci.yml` checks pushes and pull requests. Linux CI builds the pinned full native stack, runs the native suite, and executes core and crypto apps in the matching runtime image. macOS CI runs the same native suite with its private bootstrap.
|
|
39
|
+
|
|
40
|
+
The automatic publishers are included starting with `v0.20.1`. Existing tags keep their original workflows; the `v0.20.0` draft does not contain these scripts.
|
|
41
|
+
|
|
42
|
+
The manually published Marketplace `0.19.0` contains files that differ from the VSIX attached to the `v0.19.0` GitHub release. It is not a matching deployment of that archive. Use a new version for the first automated extension release; do not bypass the content comparison to skip an older mismatch.
|
|
35
43
|
|
|
36
44
|
## npm publication
|
|
37
45
|
|
|
38
|
-
The
|
|
46
|
+
The packages use the `@greenpandastudios` npm scope. Verify ownership and each package's trusted publisher before a release. GitHub tarballs can also be installed directly.
|
|
39
47
|
|
|
40
48
|
Configure a trusted publisher for each of the four npm packages:
|
|
41
49
|
|
|
@@ -47,19 +55,17 @@ Configure a trusted publisher for each of the four npm packages:
|
|
|
47
55
|
|
|
48
56
|
Use npm CLI 11.5.1+ and GitHub-hosted runners. The workflow grants `id-token: write` for OIDC and needs no stored npm publishing token. Match package repository URLs to this repository. See [npm's trusted publisher instructions](https://docs.npmjs.com/trusted-publishers/).
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
The job downloads the four reviewed tarballs, `packages.json` and `SHA256SUMS`. It checks every archive's SHA-256 and SHA-512 integrity, exact version and complete manifest against the tagged source before publishing anything. It checks all existing registry versions, then publishes standard library, web, crypto and CLI in that order with public access and the `next` dist tag. Lifecycle scripts are disabled. No rebuild or dependency installation runs in the npm deployment job.
|
|
51
59
|
|
|
52
|
-
|
|
60
|
+
Retries skip a version only when its registry integrity matches the release archive. A registry failure or a different published archive stops deployment. Each new publication is checked against the registry before proceeding. The CLI is published last because its dependencies use exact matching versions. An interrupted run can leave some libraries published; retry the same release to finish. Retries leave already-published versions and their dist tags alone. This pipeline publishes preview packages to `next`; promoting a release to `latest` remains a separate maintainer decision.
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
## VS Code Marketplace
|
|
55
63
|
|
|
56
|
-
|
|
64
|
+
The extension identity is `augscript.augscript`. An owner of the `augscript` publisher must configure a Marketplace trusted publishing policy for `GreenPandaStudios/augscript`, workflow `publish-extension.yml` and the `marketplace` deployment environment. VSCE 4.0.0 supports `vsce publish --oidc` on GitHub Actions; the workflow requests a short-lived credential and does not use a stored PAT or an Azure subscription. See [the shipping VSCE trusted publishing instructions](https://github.com/microsoft/vscode-vsce/blob/v4.0.0/README.md#trusted-publishing). Account-side trust must be configured before the first deployment; adding a workflow does not grant publisher access.
|
|
57
65
|
|
|
58
|
-
|
|
59
|
-
- Add a GitHub federated credential with issuer `https://token.actions.githubusercontent.com`, audience `api://AzureADTokenExchange`, and subject `repo:GreenPandaStudios/augscript:environment:marketplace`.
|
|
60
|
-
- Create the GitHub environment `marketplace` and set its variables `AZURE_CLIENT_ID` and `AZURE_TENANT_ID` to that identity's IDs. Configure release protection there if needed.
|
|
66
|
+
The preparation job downloads the reviewed VSIX, verifies its checksum, complete manifest, logo and bundled compiler, and installs the locked publishing tool with lifecycle scripts disabled. It passes these files to a separate `marketplace` job with OIDC permission. That job rechecks the VSIX and publishes it with `--packagePath`, so publication does not build another extension or run `vscode:prepublish`.
|
|
61
67
|
|
|
62
|
-
|
|
68
|
+
For retries, the publisher downloads an existing Marketplace version and compares all files under `extension/` with the reviewed VSIX. Marketplace signature metadata outside that directory may differ. A changed, missing or additional extension file stops the retry. After uploading, the job downloads and verifies the published version, allowing roughly a minute for indexing. If confirmation still fails after an upload, wait for the version to become available and retry. VSIX files remain available from GitHub for direct installation.
|
|
63
69
|
|
|
64
70
|
The packaging script supplies the repository's `vscode` directory as the HTTPS
|
|
65
71
|
base for README images. Verify those URLs are public before Marketplace
|
|
@@ -68,7 +74,15 @@ users. The extension logo and **AugScript: Open Welcome** images are bundled
|
|
|
68
74
|
locally and do not depend on that image host. To update artwork, run
|
|
69
75
|
`npm --prefix vscode run artwork` and commit the rendered PNGs.
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
## Deployment protection and retries
|
|
78
|
+
|
|
79
|
+
Configure GitHub environments named `npm` and `marketplace`. Allow only tags matching `v*`; use required reviewers if your release process needs another approval. Keep the npm environment name identical to each package's trusted publisher configuration, and the Marketplace policy aligned with its workflow and environment. See [GitHub's environment protection guide](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment). Restrict who can create or move release tags through repository rules.
|
|
80
|
+
|
|
81
|
+
Both workflows also accept a manual retry. Open the appropriate workflow in Actions, select the release tag as the workflow ref, and enter the same tag in the `tag` input. A branch ref, mismatched version, draft release or tag moved since the run began is rejected before publication. The tag must contain these publishing workflows and scripts. Re-running the failed job on its original run also retains the exact tagged source. npm and Marketplace have separate concurrency groups and deployment environments, so a failure at one destination can be retried independently.
|
|
82
|
+
|
|
83
|
+
Release creation uses the repository's `GITHUB_TOKEN` to create a draft. A maintainer must publish that draft through GitHub Releases or their own authorized GitHub CLI session. Events produced only by `GITHUB_TOKEN` do not start another workflow; do not replace this review step with a token-authenticated automatic publish unless you also add an explicit deployment handoff. See [GitHub's workflow trigger rules](https://docs.github.com/en/actions/how-tos/writing-workflows/choosing-when-your-workflow-runs/triggering-a-workflow#triggering-a-workflow-from-a-workflow).
|
|
84
|
+
|
|
85
|
+
If npm reports an authentication failure, check all four package connections, their exact workflow/environment spelling, permission for direct `npm publish`, and OIDC permission. For a Marketplace failure, check the publisher policy and `marketplace` environment. Do not place credentials in workflow files or release assets. The scripts distinguish missing versions from authorization and service errors; investigate the reported error before retrying.
|
|
72
86
|
|
|
73
87
|
## Documentation deployment
|
|
74
88
|
|
|
@@ -76,4 +90,4 @@ Enable GitHub Pages with **GitHub Actions** as its publishing source. `docs.yml`
|
|
|
76
90
|
|
|
77
91
|
## Current limits
|
|
78
92
|
|
|
79
|
-
August is experimental. Native web/crypto bootstrap supports macOS and Linux; other platforms are unverified.
|
|
93
|
+
August is experimental. Native web/crypto bootstrap supports macOS and Linux; other platforms are unverified. npm and Marketplace deployment require owner-configured trust; a live upload has not yet verified the new Marketplace workflow. User libraries can use public Git repositories, local folders, or npm archives. Prebuilt native dependency releases and a stable external native adapter ABI remain future work. See [the gap ledger](web-library-gaps.md) and [performance assessment](performance.md).
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Research: deterministic prose from source code
|
|
2
|
+
|
|
3
|
+
Research date: 2026-09-29. This note supports August's compiled specifications: connected prose describing local implementation behavior, with references to the dependency surfaces that the implementation actually uses. It records research evidence and proposed engineering choices; it is not an implementation status report.
|
|
4
|
+
|
|
5
|
+
## Findings that matter for August
|
|
6
|
+
|
|
7
|
+
A practical approach is to generate text from explicit program facts through document planning, sentence planning, and realization. Classic NLG separates content determination, discourse planning, aggregation, lexicalization, reference generation, and realization [1]. McBurney and McMillan apply these ideas to code, including fixed message ordering and rules that combine related phrases [5]. This provides a stronger starting point than emitting an independent template for each syntax node.
|
|
8
|
+
|
|
9
|
+
Aggregation can reduce repeated subjects and predicates while retaining the facts being communicated. Dalianis and Hovy explicitly distinguish repackaging facts from dropping selected information, and restrict reordering to zones where ordering is free [8]. For program explanations, that restriction matters: execution order, branch scope, mutation, and error behavior cannot be treated as freely reorderable facts.
|
|
10
|
+
|
|
11
|
+
Program names provide useful linguistic hints. They do not establish a function's semantics. SWUM represents action, theme, and argument relationships in names and signatures [3]. The parameter-comment work combines these clues with control flow and data dependencies and acknowledges limitations from uninformative names and abbreviations [4]. August should establish behavioral claims from its compiler representations before choosing wording.
|
|
12
|
+
|
|
13
|
+
Context can help explain how a function fits into its program. The context-summary research uses call relationships and output uses [5, 6]. Its relevance ranking deliberately selects a small subset of context, and its evaluations concern summaries. It does not demonstrate generation of a complete executable or behavioral specification.
|
|
14
|
+
|
|
15
|
+
## Primary literature reviewed
|
|
16
|
+
|
|
17
|
+
Entries report what each source supports, followed by the limit relevant to this task. Sources are linked to the paper or its publisher/author copy. Full text was inspected where available; the two abstract-only entries are marked explicitly.
|
|
18
|
+
|
|
19
|
+
### 1. Reiter and Dale, 1997: the generation pipeline
|
|
20
|
+
|
|
21
|
+
Ehud Reiter and Robert Dale. *Building Applied Natural Language Generation Systems*. Natural Language Engineering 3(1), 57–87, March 1997. [Publisher record and abstract](https://www.cambridge.org/core/journals/natural-language-engineering/article/abs/building-applied-natural-language-generation-systems/FEB374A3FF652F06D8567A6FAB2EF36E), [author-hosted PDF](https://web.science.mq.edu.au/~rdale/publications/papers/1997/jnle97.pdf). DOI: 10.1017/S1351324997001502.
|
|
22
|
+
|
|
23
|
+
The paper identifies content determination, discourse planning, sentence aggregation, lexicalization, referring expression generation, and linguistic realization as distinct tasks in applied NLG. Its stated emphasis is techniques suitable for practical systems. This gives August a vocabulary for separating semantic extraction from paragraph structure and wording. **Access limit:** the publisher abstract was read; author PDF fetching failed during this review. Detailed pipeline mechanics are additionally supported by the full-text implementation in [5]. The paper is architectural guidance, not a proof of specification completeness or reproducibility.
|
|
24
|
+
|
|
25
|
+
### 2. Sridhara et al., 2010: method summary comments
|
|
26
|
+
|
|
27
|
+
Giriprasad Sridhara, Emily Hill, Divya Muppaneni, Lori Pollock, and K. Vijay-Shanker. *Towards Automatically Generating Summary Comments for Java Methods*. ASE 2010, 43–52, September 2010. [Publication DOI](https://doi.org/10.1145/1858996.1859006), [paper abstract](https://www.researchgate.net/publication/220883580_Towards_automatically_generating_summary_comments_for_Java_methods).
|
|
28
|
+
|
|
29
|
+
The authors describe deriving descriptive method summaries from method signatures and bodies, and report programmer judgments of accuracy, important content, and conciseness. This is directly relevant precedent for source-based comment generation. **Access limit:** only the original paper's abstract was accessible; the publisher rejected access and the linked repository copy was unavailable. Implementation details should not be attributed to an independently read full text here. The later full-text papers [4, 5] discuss its selection of important statements. Neither favorable summary judgments nor selecting important content establishes that every behavior is explained.
|
|
30
|
+
|
|
31
|
+
### 3. Hill, Pollock, and Vijay-Shanker, 2011: linguistic roles in code
|
|
32
|
+
|
|
33
|
+
Emily Hill, Lori Pollock, and K. Vijay-Shanker. *Improving Source Code Search with Natural Language Phrasal Representations of Method Signatures*. ASE 2011, November 6–10, 2011. DOI: 10.1109/ASE.2011.6100115. [Author-uploaded full text](https://www.researchgate.net/publication/220883654_Improving_source_code_search_with_natural_language_phrasal_representations_of_method_signatures).
|
|
34
|
+
|
|
35
|
+
The paper uses SWUM to derive action, theme, secondary argument, and auxiliary argument roles. Its search score incorporates word location, role, distance from a phrase's head, and usage. The evaluation covers eight search tasks from four Java programs. Phrasal structure can distinguish adding an auction from adding an auction link. This supports keeping noun phrases and argument roles intact during wording. Its empirical result concerns search relevance, not generated documentation accuracy; the authors discuss limited generalization beyond Java. August's symbol resolution must establish what is called, independently of lexical heuristics.
|
|
36
|
+
|
|
37
|
+
### 4. Sridhara, Pollock, and Vijay-Shanker, 2011: parameters in context
|
|
38
|
+
|
|
39
|
+
Giriprasad Sridhara, Lori Pollock, and K. Vijay-Shanker. *Generating Parameter Comments and Integrating with Method Summaries*. ICPC 2011, 71–80. DOI: 10.1109/ICPC.2011.28. [Full paper](https://www.cs.kent.edu/~jmaletic/cs63902/Papers/Pollock11.pdf).
|
|
40
|
+
|
|
41
|
+
This method-local approach combines control flow, control and data dependencies, def-use chains, and SWUM information to identify a parameter's main role and connect it to the method's computation. It supports parameter comments and integration into method summaries. Nine experienced developers evaluated the results. The authors explicitly describe reduced readability and analysis accuracy from abbreviations and a dependence on meaningful identifiers. The approach emphasizes primary usage, so it does not justify omitting secondary parameter uses when August promises comprehensive local behavior.
|
|
42
|
+
|
|
43
|
+
### 5. McBurney and McMillan, 2014: readable method context
|
|
44
|
+
|
|
45
|
+
Paul W. McBurney and Collin McMillan. *Automatic Documentation Generation via Source Code Summarization of Method Context*. ICPC 2014, 279–290, June 2–3, 2014. [Author-hosted full paper](https://sdf.org/~cmc/papers/mcburney_icpc_2014.pdf).
|
|
46
|
+
|
|
47
|
+
The technique combines call graphs, PageRank-selected contextual methods, SWUM, and a custom NLG pipeline. Its document plan uses predefined message ordering; aggregation combines related phrases and suppresses repeated subjects and verbs. A study with twelve Java programmers evaluates understanding of internal behavior, purpose, and usage. This is particularly useful evidence that rule-driven code descriptions can form connected sentences. However, it selects only some context and uses simplifying assumptions about names and outputs. Its context descriptions are clues about role, not verified design intent or an exhaustive dependency contract.
|
|
48
|
+
|
|
49
|
+
### 6. McBurney and McMillan, 2015 accepted manuscript: stronger comparison
|
|
50
|
+
|
|
51
|
+
Paul W. McBurney and Collin McMillan. *Automatic Source Code Summarization of Context for Java Methods*. IEEE Transactions on Software Engineering, accepted manuscript bearing 2015 copyright and DOI 10.1109/TSE.2015.2465386. [Full accepted manuscript](https://sdf.org/~cmc/papers/mcburney_tse15.pdf).
|
|
52
|
+
|
|
53
|
+
This extension compares context summaries with expert summaries and an existing automatic summarizer. Its conclusion reports better contextual information than manual summaries, while human summaries were more accurate and concise; combining generated context with existing summaries improved documentation. This qualifies the earlier results: useful context does not imply human-level overall quality. The linked copy is a prepublication manuscript, so 2015 here identifies that manuscript rather than asserting the final issue's publication year. These studies are from the same research line and should not be counted as independent replications.
|
|
54
|
+
|
|
55
|
+
### 7. Reiter, Mellish, and Levine, 1995: documentation and links
|
|
56
|
+
|
|
57
|
+
Ehud Reiter, Chris Mellish, and John Levine. *Automatic Generation of Technical Documentation*. Applied Artificial Intelligence 9, 259–287, 1995; preprint submitted November 1994. [Full preprint](https://arxiv.org/pdf/cmp-lg/9411031), [version metadata](https://arxiv.org/abs/cmp-lg/9411031).
|
|
58
|
+
|
|
59
|
+
The IDAS work generates documentation from domain knowledge and linguistic/contextual models, including hypertext nodes and links. It discusses the expense of adding information absent from existing design databases and checking whether generated language faithfully reflects the knowledge base. This supports retaining explicit facts and structured references as generator input. It also shows why the quality of the underlying model constrains the text. IDAS concerns equipment help and tailored documentation, not compiler extraction from arbitrary programs; it does not solve August's dependency selection problem.
|
|
60
|
+
|
|
61
|
+
### 8. Dalianis and Hovy, 1993 workshop version: aggregation
|
|
62
|
+
|
|
63
|
+
Hercules Dalianis and Eduard Hovy. *Aggregation in Natural Language Generation*. EWNLG 1993 workshop version, later a chapter in *Trends in Natural Language Generation*. [Author-hosted manuscript](https://people.dsv.su.se/~hercules/papers/EGEN_Aggregation_NLG_1996.pdf).
|
|
64
|
+
|
|
65
|
+
The manuscript identifies aggregation operations from a small telephone-domain study, including grouping shared subjects and predicates. It distinguishes reducing redundancy from entirely omitting information chosen for communication. Its ordering discussion confines rearrangement to free-order zones in a discourse structure. Twelve participants completed the questionnaire; nine produced aggregated text. This provides concrete rules for turning repeated factual sentences into paragraphs. Its small constrained domain and assumptions about discourse structure limit generalization. The manuscript's heading identifies the 1993 workshop version; the filename should not be used as publication metadata.
|
|
66
|
+
|
|
67
|
+
### 9. Dalianis, 1995: aggregation for formal specifications
|
|
68
|
+
|
|
69
|
+
Hercules Dalianis. *Aggregation in the NL-generator of the Visual and Natural Language Specification Tool*. EACL 1995, 286–290. [Full paper](https://aclanthology.org/E95-1042.pdf).
|
|
70
|
+
|
|
71
|
+
VINST paraphrases formal information through naturalization, compacting, and surface grammar stages. The paper describes repeated noun phrase removal and proposes predicate grouping and a bidirectional grammar to improve tedious fact-base descriptions. This is an unusually close precedent for readable natural language from a formal specification representation. The discussion concerns a telecom specification prototype and a proposed architecture improvement, not an empirical demonstration that all program behaviors can be paraphrased without ambiguity. Use its representation-oriented approach while verifying August's individual language constructs.
|
|
72
|
+
|
|
73
|
+
### 10. Gatt and Reiter, 2009: realization under developer control
|
|
74
|
+
|
|
75
|
+
Albert Gatt and Ehud Reiter. *SimpleNLG: A Realisation Engine for Practical Applications*. ENLG 2009, 90–93, March 30–31, 2009. [Full paper](https://aclanthology.org/W09-0613.pdf).
|
|
76
|
+
|
|
77
|
+
SimpleNLG separates tactical linguistic choices from mechanical syntax, morphology, and linearization. Developers retain control over how semantic inputs map to phrase structures; the engine supports mixed canned and constructed text. This supports a small controlled realization layer handling coordination, agreement, inflection, and punctuation. It does not choose which source-code facts are true or complete. August need not adopt the Java library: the architectural separation is useful in a TypeScript compiler, and byte-identical output remains an engineering requirement to verify separately.
|
|
78
|
+
|
|
79
|
+
### 11. Roy, Fakhoury, and Arnaoudova, 2021: evaluation metrics
|
|
80
|
+
|
|
81
|
+
Devjeet Roy, Sarah Fakhoury, and Venera Arnaoudova. *Reassessing Automatic Evaluation Metrics for Code Summarization Tasks*. ESEC/FSE 2021, 1105–1116, August 23–28, 2021. DOI: 10.1145/3468264.3468588. [Author-hosted full paper](https://veneraarnaoudova.com/wp-content/uploads/2021/09/2021-FSE-CR-Reassessing-Automatic-Evaluation-Metrics-for-Code-Summarization-Tasks.pdf).
|
|
82
|
+
|
|
83
|
+
A study with 226 human annotators compares automatic metrics and human summary judgments. In its setting, improvements below two metric points do not reliably indicate quality improvements, and corpus BLEU remains unreliable for some larger differences. This argues against treating lexical overlap as the acceptance gate for August's prose. These observations concern the studied datasets and summarizers; they are not universal numerical thresholds. August needs direct semantic coverage checks and reader comprehension judgments, as separate dimensions.
|
|
84
|
+
|
|
85
|
+
### 12. Nie et al., 2022: evaluation should match use
|
|
86
|
+
|
|
87
|
+
Pengyu Nie, Jiyang Zhang, Junyi Jessy Li, Ray Mooney, and Milos Gligoric. *Impact of Evaluation Methodologies on Code Summarization*. ACL 2022, 4936–4960, May 2022. DOI: 10.18653/v1/2022.acl-long.339. [Full paper](https://aclanthology.org/2022.acl-long.339.pdf).
|
|
88
|
+
|
|
89
|
+
The authors compare mixed-project, cross-project, and time-segmented evaluation of learned code summarizers. Different splits can lead to conflicting conclusions, and the paper maps evaluation methods to intended use cases. This is chiefly relevant if August later adds learned lexical or summary components. Its broader lesson motivates representative acceptance examples and revisions of real programs. A deterministic rule generator has no training leakage in the same sense, so the paper's machine-learning results should not be presented as direct evidence of August's quality.
|
|
90
|
+
|
|
91
|
+
## Proposed engineering choices for August
|
|
92
|
+
|
|
93
|
+
These are recommendations derived from the requirements and the literature, not findings that the papers prove or claims that the current generator implements them.
|
|
94
|
+
|
|
95
|
+
1. Extract an immutable behavior representation from resolved compiler structures. Each fact should retain its construct identity, lexical scope, source location, guard, ordering relation, and involved symbols. Represent bindings, calculations, calls, returns, mutation, loops, pattern alternatives, cleanup, capabilities, and checked errors explicitly.
|
|
96
|
+
2. Plan documents by module and declaration, and explain each body in its actual control structure. A declaration overview can precede its detailed behavior; branches and repeated actions should remain recognizable in paragraphs. Paragraph breaks are useful boundaries for changes in scope or topic.
|
|
97
|
+
3. Aggregate adjacent compatible clauses. Combine shared subjects or predicates, introduce a value once, and use unambiguous references afterward. Keep quantified repetition, negation, mutually exclusive alternatives, and early returns explicit. Repeated calls are distinct events even when their text matches.
|
|
98
|
+
4. Use a controlled lexicon and grammar. Render equality, assignment, comparison, indexing, conditional execution, iteration, and error propagation with stable terminology. Treat names as names; retain an identifier or a precise source fragment when linguistic expansion would guess its meaning.
|
|
99
|
+
5. Derive dependency surfaces from resolved usage: called declarations, referenced values, accessed members, referenced types and constructors. Imports alone do not prove a surface is used. Aliases must resolve to their original declaration. Define separately whether type-only usage belongs in the dependency section.
|
|
100
|
+
6. Link a dependency at its use and provide one canonical description of its used contract. Explain local call arguments, return handling, state changes, and failure handling locally. Avoid recursively narrating an entire dependency implementation. If symbol resolution or documentation is unavailable, state that boundary explicitly without inventing behavior.
|
|
101
|
+
7. Make determinism explicit: fixed traversal and ordering, fixed grammar rules, canonical links, no random variation or remote generation, and no timestamps or environment-specific paths in the output. Equal compiler inputs and generator version should produce equal bytes. This is a project contract requiring tests, not a research guarantee.
|
|
102
|
+
8. Preserve a coverage ledger through planning and aggregation. Every required source fact must be realized or deliberately accounted for. Aggregated clauses should retain all contributing fact identities. This makes missing local behavior inspectable without forcing one sentence per AST node.
|
|
103
|
+
|
|
104
|
+
## Validation criteria
|
|
105
|
+
|
|
106
|
+
Use independent gates for factual coverage, faithfulness, readable prose, dependency scope, valid links, and reproducibility. Representative fixtures should include nested alternatives, early exit, loops, local mutation, errors, callbacks, aliases, overloaded or ambiguous references, type-only dependencies, and repeated effects. A sentence snapshot alone cannot prove behavior coverage.
|
|
107
|
+
|
|
108
|
+
For prose quality, ask readers to recover inputs, outputs, branching, state changes, errors, and the role of dependencies from the generated document. Review sentence-level truth separately from paragraph coherence and excessive detail. The literature supports these as useful evaluation directions; it does not establish that a compiled prose document replaces executable semantics, formal verification, domain requirements, or handwritten explanations of design intent.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Project creation, Git packages, and editor help
|
|
2
|
+
|
|
3
|
+
Research checked September 30, 2026. This note separates behavior documented by the source projects from recommendations for August. Proposed commands and import forms below are design examples, not a claim that they are implemented.
|
|
4
|
+
|
|
5
|
+
## What to borrow from Go
|
|
6
|
+
|
|
7
|
+
Go lets an author distribute a module through its source repository. The module path identifies its location, and release tags identify versions. Consumers can discover dependencies from their imports and fetch the source into a cache. A repository can contain several modules, although one module at its root is the simpler authoring path. [Go: managing module source](https://go.dev/doc/modules/managing-source)
|
|
8
|
+
|
|
9
|
+
Go accepts revision queries such as a branch or commit at the command line, then records a canonical version. Its pseudo-versions preserve a particular revision when no release tag exists. Modules can live in repository subdirectories, with a corresponding tag prefix. Cached source is checked against hashes; Go also has a public checksum database. These are separate mechanisms: storing a hash locally does not establish the publisher's identity or reproduce that database's protections. [Go modules reference](https://go.dev/ref/mod#versions), [module subdirectories](https://go.dev/ref/mod#vcs-dir), [module authentication](https://go.dev/ref/mod#authenticating)
|
|
10
|
+
|
|
11
|
+
Publishing a Go release includes testing, creating a new version tag, and pushing it. Its documentation tells authors to publish a new version rather than change an existing release. [Go: publishing a module](https://go.dev/doc/modules/publishing)
|
|
12
|
+
|
|
13
|
+
**Recommendation for August:** make a public HTTPS Git repository enough to share a library. An author should need August source, `export.aug`, one August manifest, a license, and a release tag. Keep npm archives as an additional transport, without requiring an npm account or a duplicate npm manifest for Git packages. Teach one ordinary author-to-consumer path before explaining transport alternatives.
|
|
14
|
+
|
|
15
|
+
For consumers, put the location where the dependency is used. A quoted source such as `import add from "https://github.com/example/math#v0.1.0"` is one possible form. A short package alias can remain useful when many files import the same library; let a command generate its configuration instead of making the reader maintain the mapping by hand. Avoid spelling the same URL and version in both source and configuration unless they serve different purposes.
|
|
16
|
+
|
|
17
|
+
Resolve a tag or branch to an exact commit during installation, and retain that commit, the selected repository subdirectory, and a source digest in `aug.lock.json`. A matching lock should restore that snapshot rather than follow a moved branch. Make dependency updates explicit. Continue to keep ordinary checking read-only and let `aug run` prepare missing snapshots. Distinguish “available offline” from “first download verified against a previously trusted digest.”
|
|
18
|
+
|
|
19
|
+
Git can list a remote's references and object IDs without a working-tree checkout. Annotated tags have both tag and peeled-object entries, so the resolver must retain the commit target. [Git: ls-remote](https://git-scm.com/docs/git-ls-remote)
|
|
20
|
+
|
|
21
|
+
Use subprocess argument arrays, validate repository paths and revision selectors, and disable dependency hooks. Preserve August's source-boundary and symlink checks. These are implementation recommendations, not security guarantees supplied by Go.
|
|
22
|
+
|
|
23
|
+
Move optional August libraries through the same consumer path, using actual package directories in the existing public repository. Keep compiler/runtime primitives in the toolchain. The migration must retain native adapter compatibility and make the weather starter work from an installed CLI without a language-repository checkout.
|
|
24
|
+
|
|
25
|
+
## The familiar weather API
|
|
26
|
+
|
|
27
|
+
Microsoft's ASP.NET Core web API template provides `GET /weatherforecast`. Its minimal API implementation returns five forecasts with a date, Celsius temperature, summary, and computed Fahrenheit temperature. It generates simulated values, rather than calling a weather provider. Startup, the route, and the response record are visible in its generated `Program.cs`. OpenAPI registration and its development endpoint are included when enabled. [Microsoft's minimal API template source](https://github.com/dotnet/aspnetcore/blob/main/src/ProjectTemplates/Web.ProjectTemplates/content/WebApi-CSharp/Program.MinimalAPIs.WindowsOrNoAuth.cs)
|
|
28
|
+
|
|
29
|
+
Microsoft's onboarding creates a project, runs it, opens the forecast route, and inspects the returned JSON. The tutorial also explains the generated OpenAPI document. [Microsoft: create a web API](https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-10.0)
|
|
30
|
+
|
|
31
|
+
**Recommendation for August:** offer a weather template through the installed CLI and npx, then continue with `aug run`. Keep the recognizable route and response fields. Use deterministic sample forecasts so the guide, tests, and compiled explanation agree. Say plainly that the data is simulated. Put startup in `main.aug`, the typed response and forecast operation beside their tests, and the endpoint in a nearby file if separating it helps the lesson. Include an HTTP request file, the expected JSON, OpenAPI configuration, and `AGENTS.md` with the project's own checking/spec commands. Demonstrate one change and its test after the initial successful request.
|
|
32
|
+
|
|
33
|
+
## Completion and suggested fixes
|
|
34
|
+
|
|
35
|
+
VS Code completion items accept a `SnippetString`, explicit replacement ranges, documentation, and sorting/filtering text. Additional text edits can insert an import when a completion is accepted; they must not overlap the main edit or one another. Set sorting and insertion fields in the initial result, because resolving an item later must not change them. [VS Code API: CompletionItem](https://code.visualstudio.com/api/references/vscode-api#CompletionItem)
|
|
36
|
+
|
|
37
|
+
Code actions should apply to the requested range. A quick fix can carry its diagnostic, a workspace edit, and `isPreferred` when it resolves the underlying problem. Providers should declare their supported action kinds so VS Code can avoid unnecessary requests. [VS Code API: CodeAction](https://code.visualstudio.com/api/references/vscode-api#CodeAction), [CodeActionProvider](https://code.visualstudio.com/api/references/vscode-api#CodeActionProvider)
|
|
38
|
+
|
|
39
|
+
Snippets appear in IntelliSense and the snippet picker. `editor.tabCompletion` enables insertion from a typed prefix, and numbered placeholders allow navigation through editable fields. [VS Code: snippets](https://code.visualstudio.com/docs/editing/userdefinedsnippets)
|
|
40
|
+
|
|
41
|
+
**Recommendation for August:** rank visible locals and members first, offer named argument placeholders, complete import paths and public exports, and attach Javadoc to suggestions. Add context-specific snippets for records, interfaces, implementations, endpoints, tests, error handling, tasks, and ownership scopes in the project's chosen block style. Offer fixes for misspelled visible names, missing public imports, mislabeled arguments, and absent interface members. A fix must make the program more correct; an “Explain error” action is useful help but should not be presented as a repair. Exercise these workflows against unsaved and incomplete source, since that is where users invoke completion.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Wiki editorial design research
|
|
2
|
+
|
|
3
|
+
Retrieved: 2026-09-30. Scope: public language documentation architecture and prose; this note does not establish AugustScript's implementation capabilities or comparative performance.
|
|
4
|
+
|
|
5
|
+
## Primary source observations
|
|
6
|
+
|
|
7
|
+
The Rust book introduces the language's purpose, identifies its readers, states that readers should already know another programming language, and explains a sequential learning path. Its chapters alternate concepts with small projects; its introduction also explains how deliberately failing examples are labeled. These are useful mechanisms for setting expectations before the reader encounters unfamiliar rules. [Rust book introduction](https://doc.rust-lang.org/book/ch00-00-introduction.html)
|
|
8
|
+
|
|
9
|
+
The C About page opens with a small program, explains the language's history and common uses, and links to learning resources and the standards committee. Its compact presentation connects a concrete language sample to purpose and provenance. This observation concerns the page's editorial structure, not independent verification of its historical or adoption claims. [C About](https://www.c-language.org/about)
|
|
10
|
+
|
|
11
|
+
Diátaxis distinguishes tutorials, task-oriented how-to guides, technical reference, and explanation according to the reader's needs. It recommends organizing documentation around these different needs. [Diátaxis](https://diataxis.fr/)
|
|
12
|
+
|
|
13
|
+
For tutorials, Diátaxis recommends an achievable practical goal, small concrete actions, visible results early, expected output, and a dependable path. It advises moving extended explanations and alternative choices out of the immediate lesson. [Diátaxis tutorials](https://diataxis.fr/tutorials/)
|
|
14
|
+
|
|
15
|
+
For reference, Diátaxis recommends precise descriptions, consistent patterns, an organization corresponding to the product, and examples that illustrate usage. It explicitly recognizes generated API documentation as useful for fidelity while distinguishing it from a complete documentation system. [Diátaxis reference](https://diataxis.fr/reference/)
|
|
16
|
+
|
|
17
|
+
Google's developer style guide recommends conversational, respectful prose, active voice, second person, descriptive links, and conditions stated before instructions. It advises against announcing unreleased functionality in documentation. [Google style highlights](https://developers.google.com/style/highlights)
|
|
18
|
+
|
|
19
|
+
Google's tone guidance emphasizes direct, useful writing for developers who may be in a hurry. It discourages buzzwords, filler, awkward sentences, and assurances that procedures are easy. Its code-sample guidance recommends introductory context, the relevant project's formatting conventions, readable line lengths, and explicit comments for omitted code. [Google voice and tone](https://developers.google.com/style/tone), [Google code samples](https://developers.google.com/style/code-samples)
|
|
20
|
+
|
|
21
|
+
Write the Docs recommends explaining the problem a project solves, showing a common small example, providing concise basic installation instructions with links to caveats, and exposing source, issue reporting, support, contribution, and license information. It warns that expanding FAQs can accumulate unrelated material and become difficult to search. [Write the Docs beginner guide](https://www.writethedocs.org/guide/writing/beginners-guide-to-docs/)
|
|
22
|
+
|
|
23
|
+
## Application to AugustScript
|
|
24
|
+
|
|
25
|
+
The following recommendations are editorial synthesis, not claims made by the sources. The audience supplied for this work is senior engineers and large teams changing unfamiliar modular code with coding agents, with a quick entrance for hobbyists. Agent experiments are still underway: the wiki should present inspectable language mechanisms and examples without claiming that superiority has been proved.
|
|
26
|
+
|
|
27
|
+
The audit issues to resolve are mixed navigation, dense reference serving as the first lesson, unsupported metrics or broad claims, and a missing progression for learners. These are local editorial concerns, not external research findings.
|
|
28
|
+
|
|
29
|
+
### Give each reading mode a clear entrance
|
|
30
|
+
|
|
31
|
+
Use a small public landing page to explain what AugustScript is, the problems its design addresses, how to run a first program, and where to continue. Place a short, implemented example near the opening. Describe the current implementation and material limits plainly; link to detailed status rather than placing a backlog in the main introduction. This recommendation combines C's compact positioning with Write the Docs' practical entry points.
|
|
32
|
+
|
|
33
|
+
Provide five recognizable documentation areas:
|
|
34
|
+
|
|
35
|
+
| Area | Reader's purpose | Editorial shape |
|
|
36
|
+
| --- | --- | --- |
|
|
37
|
+
| Learn | Build familiarity with the language | A book-like sequence of lessons and small programs |
|
|
38
|
+
| Guides | Complete a specific task | Prerequisites, actions, expected result, relevant caveats |
|
|
39
|
+
| Reference | Check exact behavior | Consistent language, library, CLI, and configuration entries |
|
|
40
|
+
| Explanation | Understand a design choice | Rationale, tradeoffs, examples, and links to exact contracts |
|
|
41
|
+
| Engineering | Work on AugustScript itself | Compiler/runtime architecture, contribution, releases, documentation maintenance |
|
|
42
|
+
|
|
43
|
+
The four reader modes adapt Diátaxis; Engineering is a local addition for contributors. Keep product-user learning distinct from instructions for maintaining the repository. A source file or implementation detail belongs in public prose when it helps explain a contract or debug a real problem.
|
|
44
|
+
|
|
45
|
+
### Build a dependable learning sequence
|
|
46
|
+
|
|
47
|
+
State the assumed programming background. Begin with installation and a runnable first program, then build toward values and functions, control flow, custom data, modules and public boundaries, errors, and explicit capabilities as supported by the implementation. Use a modest project to connect earlier concepts before presenting advanced reference detail. Treat this sequence as a proposal to validate against actual dependencies between language features.
|
|
48
|
+
|
|
49
|
+
Each lesson should answer a concrete question, show a complete program or clearly labeled fragment, explain the important behavior, and provide the output or diagnostic the reader should observe. Introduce one unfamiliar idea at a time where practical. Link to the full reference for exhaustive syntax, edge cases, and advanced forms. Deliberately failing programs should say that they fail before the code and explain the diagnostic afterward. Rust's failure labeling and Diátaxis' expectation-setting support these choices.
|
|
50
|
+
|
|
51
|
+
### Make prose earn trust through evidence
|
|
52
|
+
|
|
53
|
+
Explain a mechanism and its consequence in ordinary developer language. For example, an account of module boundaries should show what a caller can access and what change is rejected, then explain how that makes an unfamiliar module easier to inspect. Avoid turning design goals into guarantees. Quantitative performance or productivity claims require reproducible evidence and scope; otherwise remove them or describe them as an investigation.
|
|
54
|
+
|
|
55
|
+
Keep implementation limits next to affected examples and contracts. A centralized readiness page can summarize support, but readers should not need to discover it to learn that the example in front of them cannot run. Clearly distinguish implemented behavior, experimental behavior, and proposed work. Pending approval work must not appear as an available capability.
|
|
56
|
+
|
|
57
|
+
Use short connected paragraphs, concrete titles, and code identifiers when they identify actual syntax or APIs. Introduce code with its purpose, then explain what to notice. Reserve tables for comparisons and mappings; reserve lists for actual sequences or parallel facts. Concision should remove repetition and filler while preserving the reasoning needed to understand the example.
|
|
58
|
+
|
|
59
|
+
### Verify the published contract
|
|
60
|
+
|
|
61
|
+
The local verification recommendation is to execute runnable examples with the documented compiler and CLI, check intended failures, and compare output with the prose. Validate package installation paths as documented, preserve executable-fence metadata, regenerate API and construct pages, and run documentation drift and site checks. Recheck readiness statements against code, tests, and the approved scope. Generated reference and handwritten explanations should agree on terminology and behavior.
|
|
62
|
+
|
|
63
|
+
Success means a newcomer can reach a working program and understand why it behaves as shown; a returning engineer can locate an exact contract; and a contributor can find implementation instructions without interrupting either journey.
|
|
64
|
+
|
|
65
|
+
## Installation audit during implementation
|
|
66
|
+
|
|
67
|
+
The source wiki still said the CLI had not been published. A live `npm view` check on September 30, 2026 found `@greenpandastudios/aug-cli`, `aug-stdlib`, `aug-web`, and `aug-crypto` at 0.19.0; the CLI's `next` and `latest` tags both selected that version and its library dependencies used exact matching versions. The published CLI was installed in a temporary directory and passed starter creation, checking, a native test, execution, spec generation, and read-only drift checking. That smoke run reused the verified native cache and does not by itself establish a fresh host's full web/crypto bootstrap. [CLI registry metadata](https://registry.npmjs.org/@greenpandastudios%2Faug-cli), [standard library](https://www.npmjs.com/package/@greenpandastudios/aug-stdlib), [web library](https://www.npmjs.com/package/@greenpandastudios/aug-web), [crypto library](https://www.npmjs.com/package/@greenpandastudios/aug-crypto)
|
|
68
|
+
|
|
69
|
+
An additional run used the exact `npx @greenpandastudios/aug-cli@next init` starter, a global installation under a temporary prefix, and an empty temporary native cache. The extraction-only minicoro/yyjson bootstrap, native test, run, spec generation, and drift check all passed. This verifies the book's core onboarding path on the measured macOS host; it does not certify fresh web/crypto builds or other platforms.
|
|
70
|
+
|
|
71
|
+
The installation lesson now uses available registry commands. The publishing task “Streamline getting started with npx” verified the public starter and matching packages. Its `init` implementation creates files; native source preparation remains explicit. The book now continues through `npx`, and the gallery supplies independent ZIP project archives with their license. A fresh-cache run of the public starter passed checking, execution, tests, spec generation, and drift checking without a global install. Downloaded calculator and neighboring package projects also ran through the public CLI. The standalone Docker recipes installed that CLI, built the complete native dependency set on Linux ARM64, and checked, tested, compiled, and ran the starter in the run image. These checks establish those workflows, not broader platform or service readiness. Contributor benchmark maintenance is separate from application instructions. This is a concrete example of why editorial review must check public claims against live distribution evidence, even when the checked source examples remain valid.
|
package/docs/roadmap.md
CHANGED
|
@@ -7,7 +7,7 @@ August's goal is a language that stays understandable as a codebase grows: local
|
|
|
7
7
|
| 0.19: public preview | Runnable CLI, editor, source packages, wiki, same-file tests, specs, measured benchmarks, and starter projects. | Current CI and [example projects](examples/index.md); experimental label remains. |
|
|
8
8
|
| 0.x: language and ownership | Define and check mutable captures, shared object lifetime, cleanup, delayed errors, and task cancellation for the documented cooperative task model; keep both block styles and specs in sync. | **Open:** the [ownership and task conformance suite](language-conformance.md) covers moves, aliases, branch and nested-scope joins, initialization, return/error exits, collection pressure, and public `Task<T>` errors. [Generated robustness checks](production-readiness.md#what-is-measured-and-verified) now exercise parser recovery, native results, and the core runtime under sanitizers. Adversarial review found additional capture and lifetime gaps after the first green CI run; independent review and wider runtime coverage remain before this gate can close. |
|
|
9
9
|
| 0.x: portable native stack | Reproducible Linux and macOS web/crypto builds; build/run container images for full apps; platform-specific CI. | Versioned dependency manifests, license notices, native integration tests, and matching package builds on each target. |
|
|
10
|
-
| 0.x: developer distribution | Publish version-matched npm packages and VS Code extension; project bootstrap with `npx`; package compatibility and reproducible releases. |
|
|
10
|
+
| 0.x: developer distribution | Publish version-matched npm packages and VS Code extension; project bootstrap with `npx`; package compatibility and reproducible releases. | The [0.19.0 npm packages and core `npx` workflow](packages.md#npm-registry) are verified. The gate also requires clean installed-package tests, signed/versioned artifacts, release instructions, and a supported upgrade path. |
|
|
11
11
|
| 1.0.0 | Freeze the supported language and package/native ABI; publish migration policy and production support matrix. | All preceding gates pass in CI, examples and specs regenerate deterministically, dependency audit and security review pass, and known gaps are classified explicitly. |
|
|
12
12
|
|
|
13
13
|
HTTP and OIDC hardening are library and application work. They are tracked in the [web and crypto gap ledger](web-library-gaps.md) and are not gates for the language's 1.0 release. The [compatibility policy](compatibility.md) identifies the proposed 1.x contract and platform evidence still required. The [production readiness page](production-readiness.md) explains current use and dependency obligations. Language performance is tracked with [reproducible benchmarks](performance.md), with regressions investigated before a stable release.
|
package/docs/specifications.md
CHANGED
|
@@ -16,11 +16,21 @@ aug spec . --check
|
|
|
16
16
|
| `export.aug` | `export.aug.md`: the folder's public surface. |
|
|
17
17
|
| An installed dependency | A versioned explanation and source copy under `.aug-spec/`. |
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
After a source change, run `aug check .` and `aug test .`, regenerate with `aug spec .`, and review the source and spec diffs together. Use `aug spec . --check` in CI to detect drift without writing files. It fails if a document, source pointer, dependency copy, or manifest is missing or stale.
|
|
20
|
+
|
|
21
|
+
Successful `build`, `run`, and `bench` commands also refresh specs after native compilation. `aug pack` refreshes them before creating the source archive. [Change an unfamiliar module](guides/change-a-module.md) walks through this workflow.
|
|
22
|
+
|
|
23
|
+
Generation also adds one managed comment at the top of each project source file:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
// aug-spec: "orders.aug.md" explains this file. Read it before changes; refresh with aug spec.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This points readers and coding agents to the explanation before they edit the code. The compiler keeps the pointer current after a rename and preserves handwritten comments. It does not edit installed dependencies. Native builds add the pointer after checking and before C emission, so source maps use the correct lines. `aug spec --check` reports missing or outdated pointers without adding them.
|
|
20
30
|
|
|
21
31
|
## What the document explains
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
Read a spec as a developer's explanation of the file. Each declaration has a short introduction and ordinary paragraphs about its behavior. The text explains inputs, dependencies, decisions, changes, results, and failures. It includes private helpers and same-file tests. Endpoint explanations include their routes, request inputs, policies, and HTTP outcomes.
|
|
24
34
|
|
|
25
35
|
For example, this complete program uses two source files:
|
|
26
36
|
|
|
@@ -30,25 +40,29 @@ print(value=total(price=7, quantity=3))
|
|
|
30
40
|
```
|
|
31
41
|
|
|
32
42
|
```aug project=spec-guide file=prices.aug
|
|
33
|
-
total(int price, int quantity)
|
|
43
|
+
total(int price, int quantity):
|
|
34
44
|
if quantity > 0:
|
|
35
45
|
return price * quantity
|
|
36
46
|
return 0
|
|
37
47
|
```
|
|
38
48
|
|
|
39
|
-
Without any comments, the generated
|
|
49
|
+
Without any author comments, the generated explanation reads:
|
|
40
50
|
|
|
41
|
-
>
|
|
42
|
-
> - Return `price` times `quantity`.
|
|
43
|
-
> - Return `0`.
|
|
51
|
+
> It takes `price` and `quantity` as integers. It returns `price` times `quantity` if `quantity` is positive, or `0` otherwise.
|
|
44
52
|
|
|
45
|
-
|
|
53
|
+
Related work is explained together. Validation describes the requirements and what happens at the first failed check. HTTP results describe responses. Collection updates describe the values added or stored. Decisions, repeated effects, recovery, and cleanup remain part of the explanation.
|
|
46
54
|
|
|
47
|
-
|
|
55
|
+
For a list of literal records, the spec names the fields once and gives the rows in their original order. Calls with computed inputs keep their individual explanations, so the shorter description does not hide work or dependencies.
|
|
56
|
+
|
|
57
|
+
String construction appears as readable text such as `Hello, {name}!`. Braces mark inserted values; doubled braces represent literal braces. Parentheses preserve expression grouping when it changes the meaning. These are conventions in the explanation, not new August source syntax.
|
|
58
|
+
|
|
59
|
+
Javadoc, when present, becomes part of the explanation: its summary introduces the declaration, parameter notes sit beside their inputs, and return and error notes sit beside those outcomes. Comments can explain intent that a compiler cannot infer, but readers do not need them to follow the checked inputs, operations, and outcomes.
|
|
60
|
+
|
|
61
|
+
Optional contracts describe a value or null. Omitted inputs become null too. The [language reference](reference.md#null-matching-and-checked-failures) gives the matching and narrowing rules.
|
|
48
62
|
|
|
49
63
|
## Dependencies stay small and navigable
|
|
50
64
|
|
|
51
|
-
|
|
65
|
+
The document follows the file's declarations and startup work. A short dependency section names only the types, operations, and fields used here, grouped by module. Their links lead to complete explanations. It does not repeat dependency signatures or implementation bodies. Built-in contracts link to the language reference.
|
|
52
66
|
|
|
53
67
|
`import everything` stays valid. The spec lists the names and operations actually used by the file. Adding an unused export does not expand that list. VS Code hover still shows all names available from the import.
|
|
54
68
|
|
|
@@ -79,7 +93,9 @@ In VS Code, use **AugScript: Open Compiled Specification** to generate and previ
|
|
|
79
93
|
|
|
80
94
|
## Determinism and limits
|
|
81
95
|
|
|
82
|
-
Generation is offline and deterministic for the same checked sources, configuration, installed
|
|
96
|
+
Generation is offline and deterministic for the same checked sources, configuration, installed dependencies, and compiler version. It adds no timestamps or machine paths. Explanations include inferred result types, mutations, dependencies, and escaping errors even when their clauses are absent from source. Explanations use checked contracts; the writer does not guess what an arbitrary function does from its name.
|
|
97
|
+
|
|
98
|
+
The spec describes the checked program; it is not a proof that the implementation meets your domain's requirements. Review the explanation for clarity and intent, and use tests for behavior. [Research and implementation notes](research/code-to-natural-language.md) explain the generation approach and its evaluation limits.
|
|
83
99
|
|
|
84
100
|
ASD-STE100 guides the wording. The output is best effort Simplified Technical English, without a claim of formal compliance. Native C boundaries are explained through their declared contracts and author documentation; the compiler does not infer a foreign implementation's internals. Shared numeric, ownership, and task rules link to the language reference.
|
|
85
101
|
|
package/docs/testing.md
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
# Built-in unit tests
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Keep a behavior test in the same file as the declaration it checks. A reader can inspect the contract, implementation, and cases together. August's CLI runs these tests as native programs; you do not need a test package, and test bodies are excluded from production executables.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Use `test functionName` for a function or `test ClassName subject` for a class. This guide gives complete examples, then covers setup, filtering, and coverage. If testing is new to you in August, work through [State and tests](learn/state-and-tests.md) first. For HTTP, use [endpoint tests](web.md#endpoint-tests); they exercise routing and policies, while live sockets and TLS need separate transport tests.
|
|
6
6
|
|
|
7
7
|
## A complete function suite
|
|
8
8
|
|
|
9
|
+
Save these three files in one folder. `aug run .` prints `3`; `aug test .` runs four cases. Three come from the input rows, and one calls the reusable fixture.
|
|
10
|
+
|
|
11
|
+
**main.aug**
|
|
12
|
+
|
|
9
13
|
```aug project=testing-guide file=main.aug
|
|
10
14
|
import add from math
|
|
11
15
|
|
|
12
16
|
print(value=add(left=1, right=2))
|
|
13
17
|
```
|
|
14
18
|
|
|
19
|
+
**fixtures.aug**
|
|
20
|
+
|
|
15
21
|
```aug project=testing-guide file=fixtures.aug
|
|
16
22
|
/** A reusable, pure test input. */
|
|
17
23
|
fixture seven() returns int:
|
|
18
24
|
return 7
|
|
19
25
|
```
|
|
20
26
|
|
|
27
|
+
**math.aug**
|
|
28
|
+
|
|
21
29
|
```aug project=testing-guide file=math.aug
|
|
22
30
|
import seven from fixtures
|
|
23
31
|
|
|
@@ -39,10 +47,14 @@ test add:
|
|
|
39
47
|
assert(add(left=seven(), right=0) == 7)
|
|
40
48
|
```
|
|
41
49
|
|
|
42
|
-
Each tuple row becomes a separately listed and executed case.
|
|
50
|
+
Each tuple row becomes a separately listed and executed case. The checker verifies its arity and types, and the row variables belong to that case. `fixture seven` is a reusable checked function. Import fixtures explicitly and declare their dependencies and effects, as you would for other functions. They remain callable outside tests and create no implicit setup scope.
|
|
43
51
|
|
|
44
52
|
## A complete class suite
|
|
45
53
|
|
|
54
|
+
In a separate folder, save these two files. `aug run .` prints `1`, and `aug test .` runs two cases. Notice that the second case sees the initial counter value even though the first case increments its own subject.
|
|
55
|
+
|
|
56
|
+
**main.aug**
|
|
57
|
+
|
|
46
58
|
```aug project=class-testing-guide file=main.aug
|
|
47
59
|
import Counter from counter
|
|
48
60
|
|
|
@@ -50,6 +62,8 @@ counter = Counter(initial=1)
|
|
|
50
62
|
print(value=counter.value())
|
|
51
63
|
```
|
|
52
64
|
|
|
65
|
+
**counter.aug**
|
|
66
|
+
|
|
53
67
|
```aug project=class-testing-guide file=counter.aug
|
|
54
68
|
interface Count:
|
|
55
69
|
increment() changes self
|
|
@@ -72,7 +86,7 @@ test Counter counter:
|
|
|
72
86
|
assert(counter.value() == 3)
|
|
73
87
|
```
|
|
74
88
|
|
|
75
|
-
The subject header
|
|
89
|
+
The subject header names a local class and its test variable. It does not construct the subject; setup does that here. Each case gets a new counter. Tests follow ordinary privacy rules, so sharing the source file does not grant access to `_count`. Test generic classes with concrete type arguments.
|
|
76
90
|
|
|
77
91
|
## Groups, setup, and dependencies
|
|
78
92
|
|
|
@@ -92,7 +106,7 @@ An uncaught checked error, a native crash, a nonzero exit, or a timeout fails th
|
|
|
92
106
|
|
|
93
107
|
## CLI and coverage
|
|
94
108
|
|
|
95
|
-
Use `aug`
|
|
109
|
+
Use `npx @greenpandastudios/aug-cli@next` in place of `aug` below, or use an installed `aug` command. See [Your first project](getting-started.md) for the npm workflow.
|
|
96
110
|
|
|
97
111
|
| Command | Action |
|
|
98
112
|
| --- | --- |
|