Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
74fb05e
chore: cleaned up
trancee Sep 1, 2026
0987840
feat(plan): chart wayfinder map for Kompact serialization framework
trancee Sep 1, 2026
40140bc
feat(plan): resolve v1 type set, seed framing frontier ticket
trancee Sep 1, 2026
d2c9b58
feat(plan): resolve framing, seed validation frontier
trancee Sep 1, 2026
6879941
feat(plan): resolve validation model, seed write/builder ticket
trancee Sep 1, 2026
f309d7f
feat(plan): resolve write/builder interface, seed runtime error-model…
trancee Sep 1, 2026
a46577b
feat(plan): resolve runtime error model, seed versioning ticket
trancee Sep 1, 2026
88d16a1
feat(plan): resolve versioning model, seed testing-model ticket
trancee Sep 1, 2026
36da395
feat(plan): resolve testing model, seed performance-evidence ticket
trancee Sep 1, 2026
a75037c
feat(plan): resolve testing model, fold perf-evidence (verified), see…
trancee Sep 2, 2026
83418be
feat(plan): resolve module split & publication, lock destination spec
trancee Sep 2, 2026
177f220
docs: performance evidence plan
trancee Sep 2, 2026
1f44876
docs: resolve KMP/KSP publication wiring (Ticket 13)
trancee Sep 2, 2026
35158b2
feat(kmp): bootstrap Kompact runtime + VehicleTelemetry + publication…
trancee Sep 2, 2026
546df38
feat(kmp): v1 error model + checked reads + 64-bit bit primitives
trancee Sep 3, 2026
9376278
feat(kompact): serialization framework foundation slice
trancee Sep 4, 2026
beabe37
fix: commit Gradle wrapper jar to restore ./gradlew in CI
trancee Sep 5, 2026
b06524e
fix(security): fail-fast VehicleTelemetry guard and Long-overflow har…
trancee Sep 5, 2026
a72d9f1
feat(kmp): scalar read/write API replacing per-width overloads
trancee Sep 5, 2026
2f6f552
ci: run :kompact:apiCheck on macOS + jvmTest on Linux
trancee Sep 5, 2026
061721b
ci: add macOS golden-regen workflow (workflow_dispatch)
trancee Sep 5, 2026
8d8eeaa
ci: temporarily add macOS api-dump job (regenerate+verify+upload; fea…
trancee Sep 5, 2026
3bf46cb
ci: drop apiCheck self-step from temp api-dump (implicit-dep trap)
trancee Sep 5, 2026
e93362a
fix: regenerate kompact.klib.api on macOS + remove temp api-dump ci job
trancee Sep 5, 2026
f040c50
docs: add user-facing docs (README + getting-started + api-reference …
trancee Sep 5, 2026
87e5daa
feat: ScalarType checked accessors + OrThrow wrappers + NestedRegionR…
trancee Sep 5, 2026
18732a4
chore: regenerate kompact.klib.api golden (macOS apiDump)
trancee Sep 5, 2026
13f2f5b
feat: register Kompact.Result namespace + split checked-read tests
trancee Sep 6, 2026
cf7dde5
chore: regenerate kompact.klib.api golden (Kompact.Result)
trancee Sep 6, 2026
445397d
chore: close out issues 04 + 09 (Kompact.Result + test split)
trancee Sep 6, 2026
28c6a12
Merge branch 'main' into feat/laguna
trancee Sep 6, 2026
59d58e8
docs(map): reconcile frontier + impl step to execution reality
trancee Sep 6, 2026
1441b0c
fix(publishing): correct Central Portal API endpoints and signing key…
trancee Sep 6, 2026
d3f61a7
docs: reconcile all documentation to actual source API
trancee Sep 6, 2026
72d9e20
feat(generated): add write-through var setters + create factory to Ve…
trancee Sep 6, 2026
3486b44
refactor(generated): extract create factory body to common helper
trancee Sep 6, 2026
bb5aff2
docs: add VehicleTelemetry reference section, fix property name
trancee Sep 6, 2026
bae7379
docs(adr-0001): document setter input validation as intentional design
trancee Sep 6, 2026
82a7c8c
docs(README): add quick-reference example for create/constructor/sett…
trancee Sep 6, 2026
b1e42ee
ci: enable strictValidation on klibApiCheck, fold jvmApiCheck into Li…
trancee Sep 7, 2026
5d1360a
ci: add permissions for contents and pull-requests in CI workflow
trancee Sep 7, 2026
29f4b3b
docs: add how-to guides, common-patterns section, and fix anchor
trancee Sep 7, 2026
45fdd2a
fix(kompact): classify readNested prefix-overflow/overrun as BadLengt…
trancee Sep 9, 2026
90e3aae
refactor(kompact): rename internal throw-failure helpers per ergonomi…
trancee Sep 9, 2026
4f6f1f3
docs(kompact): correct ticket-reference drift and stale test comment
trancee Sep 9, 2026
0d9eff3
test(kompact): add per-type getOrElse/map coverage for typed results
trancee Sep 9, 2026
b4f478f
refactor(kompact): expose INVALID_LENGTH_PREFIX sentinel (Q9)
trancee Sep 9, 2026
4ef6bc6
docs(versioning): defer versioning surface to v2 (ADR-0002 + issue 15)
trancee Sep 9, 2026
e8a1fef
fix(ci): resolve klibApiCheck failure and remove all build warnings
trancee Sep 9, 2026
85860b1
docs(ci): audit and fix docs via Diataxis + resolve klibApiCheck warn…
trancee Sep 10, 2026
f3473e6
docs: technical-writing polish on architecture + api-reference
trancee Sep 10, 2026
0c8e0cf
docs(ci): commit generated Dokka API reference + sync docs to source
trancee Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
65 changes: 65 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
root = true

# Kotlin source files
[*.kt]
max_line_length = 120
ktlint_code_style = ktlint_official
indent_style = space
indent_size = 4
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true
ktlint_standard_import-sorting = "ascii"

# Gradle Kotlin DSL files
[*.gradle.kts]
max_line_length = 120
ktlint_code_style = ktlint_official
indent_style = space
indent_size = 4
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

# TOML (version catalog)
[*.toml]
max_line_length = 120
indent_style = space
indent_size = 4
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

# YAML / CI workflows
[*.{yml,yaml}]
max_line_length = 120
indent_style = space
indent_size = 2
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

# Markdown
[*.md]
max_line_length = 120
indent_style = space
indent_size = 4
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

# Properties files
[*.properties]
max_line_length = 120
indent_style = space
indent_size = 4
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

# Gradle wrapper properties
[gradle-wrapper.properties]
max_line_length = 120
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true
27 changes: 27 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Maven Central Portal publishing — environment variables
# Copy to .env and fill in real values. NEVER commit .env.
# See references/central-release-report.md and .scratch/kompact-spec/issues/14-maven-central-publishing.md

# --- Central Portal API token (https://central.sonatype.com/ → Account → User Tokens) ---
CENTRAL_PORTAL_TOKEN_USERNAME=
CENTRAL_PORTAL_TOKEN_PASSWORD=

# --- Deployment ID (written to build/portal/deployment-id by centralPortalDeploy) ---
# Optionally set this instead of letting the task read the saved file.
CENTRAL_PORTAL_DEPLOYMENT_ID=

# --- PGP signing key (ASCII-armored private key, from `gpg --armor --export-secret-keys`) ---
# SIGNING_KEY_ID: 16-char long key ID (e.g. C9E0F0E1681C9AF1). Gradle's signing
# plugin rejects 16-char IDs without 0x prefix; the loader script auto-shortens to
# the last 8 chars (e.g. 681C9AF1) before passing to Gradle. The .env file keeps
# the full long ID.
SIGNING_KEY=
SIGNING_KEY_ID=
SIGNING_PASSWORD=

# --- CI/CD (GitHub Actions) ---
# These are committed as repository secrets, not in .env.
# COPILOT_GITHUB_TOKEN is already present (created 2026-09-03).
# Add: SIGNING_KEY, SIGNING_KEY_ID, SIGNING_PASSWORD,
# CENTRAL_PORTAL_TOKEN_USERNAME, CENTRAL_PORTAL_TOKEN_PASSWORD
# via: gh secret set <NAME> --repo trancee/kompact
56 changes: 56 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: CI

# Validates the public ABI goldens and runs the JVM test suite.
# apiCheck (macOS) enforces both kompact.api (JVM) and kompact.klib.api (merged
# ios klib) with strictValidation — iOS klibs can only be compiled on Apple
# hosts, so the klib golden is only meaningfully validated on the macOS job.
# On Linux, klibApiCheck fails (unsupported targets); the Linux job runs
# jvmApiCheck + jvmTest only (fast JVM API gate before the macOS final gate).

on:
push:
branches:
- main
- master
- 'feat/**'
pull_request:
branches:
- main
- master

permissions:
contents: read
pull-requests: write

jobs:
api-check:
name: apiCheck + spotlessCheck (macOS)
runs-on: macos-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
cache: gradle
- run: ./gradlew spotlessCheck :kompact:apiCheck --no-daemon --rerun-tasks --no-build-cache --warning-mode all
# The committed rendered reference in kompact/docs/api/ must stay in sync
# with the KDoc in commonMain. Regenerate and fail if the committed tree
# drifts (up-to-date checking means dokka only re-runs when KDoc changes).
# macOS only: dokka analyses the iOS klibs, which can't be compiled on Linux.
- name: Verify generated Dokka reference is in sync
run: |
./gradlew :kompact:dokkaGeneratePublicationHtml --no-daemon --console=plain
git diff --exit-code -- kompact/docs/api/

jvm-test:
name: jvmTest + jvmApiCheck + spotlessCheck + koverVerify (Linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
cache: gradle
- run: ./gradlew spotlessCheck :kompact:koverVerify :kompact:jvmTest :kompact:jvmApiCheck --no-daemon --rerun-tasks --no-build-cache --warning-mode all
6 changes: 3 additions & 3 deletions .github/workflows/regen-goldens.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@ jobs:
regen:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 21
cache: gradle
- name: Regenerate ABI goldens
run: ./gradlew ${{ inputs.args }} --no-daemon
- name: Upload regenerated goldens
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: api-goldens
path: kompact/api/
Expand Down
34 changes: 34 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Gradle
.gradle/
.kotlin/
.poolside/
build/
out/
gradle/wrapper/dists/

# Artifacts
*.jar
*.war
*.class
*.klib
*.knp
# The Gradle wrapper jar MUST be committed (gradle/wrapper/gradle-wrapper.jar) so
# `./gradlew` works in CI/dev — un-ignore it despite the *.jar rule above.
!gradle/wrapper/gradle-wrapper.jar

# IDE
.idea/
*.iml
local.properties

# OS
.DS_Store

# Tooling / environment (not part of the library)
.poolside/
.env

# Generated Dokka HTML API reference for the kompact module. The rendered
# site in docs/api/ is committed (so the in-repo api-reference.md pointer is
# always live); regenerate with `:kompact:dokkaGeneratePublicationHtml`.
# KDoc in commonMain is the source of truth for the API surface.
Loading
Loading