Skip to content
Draft
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
c776501
chore: claim complete graph snapshot mission
samchon Jul 30, 2026
22da7cc
feat: establish graph snapshot trust foundation
samchon Jul 30, 2026
5db5830
fix: enforce snapshot publication trust boundaries
samchon Jul 30, 2026
f011c03
fix: stabilize snapshot generations and Go facts
samchon Jul 30, 2026
a5fcad1
fix: separate Go universe from derived artifacts
samchon Jul 30, 2026
7172156
test: name Go fixture indexer receiver
samchon Jul 30, 2026
be05d7c
feat: convert TypeScript snapshots to graph protocol
samchon Jul 31, 2026
d02b5e7
fix: preserve graph protocol uncertainty
samchon Jul 31, 2026
13da35d
fix: canonicalize shared protocol inputs
samchon Jul 31, 2026
b6e8feb
feat: add repository context topology
samchon Jul 31, 2026
edd8bc9
fix: close repository topology truth gaps
samchon Jul 31, 2026
15fc4d5
fix: preserve bounded topology truth
samchon Jul 31, 2026
2f3a8b2
fix: enforce exact topology freshness
samchon Jul 31, 2026
da540fd
fix: preserve exact topology case
samchon Jul 31, 2026
efae059
docs: publish provider support truth
samchon Jul 31, 2026
01e633b
fix: close provider support truth gaps
samchon Jul 31, 2026
5f7f2ca
fix: preserve exact provider command sources
samchon Jul 31, 2026
9a1f3c7
test: require provider validation failures
samchon Jul 31, 2026
f8874fd
fix: preserve provider support line endings
samchon Jul 31, 2026
c8f6b9f
feat: consume incremental TypeScript graph shards
samchon Jul 31, 2026
412628d
fix: harden incremental TypeScript graph snapshots
samchon Aug 1, 2026
78b86f2
fix: prove the TypeScript release boundary
samchon Aug 1, 2026
296e993
test: match native TypeScript dependency boundaries
samchon Aug 1, 2026
b4eb607
test: encode native TypeScript keys like Go
samchon Aug 1, 2026
74bdc60
feat: integrate resident Rust HIR snapshots
samchon Aug 1, 2026
6f6ed7c
fix: complete resident Rust HIR snapshots
samchon Aug 1, 2026
cc13fa0
fix: distinguish virtual Rust source digests
samchon Aug 1, 2026
e973e2b
feat(graph): add native clangd snapshot provider
samchon Aug 3, 2026
1f55005
fix(graph): close native C and C++ trust boundaries
samchon Aug 3, 2026
3f069fb
fix(graph): close C and C++ review gaps
samchon Aug 3, 2026
bccefe4
fix(graph): exempt Windows-only path branch from Unix coverage
samchon Aug 3, 2026
c01a42d
fix(graph): ignore the full Windows-only coverage branch
samchon Aug 3, 2026
02c3574
fix(graph): keep Unix C++ path coverage visible
samchon Aug 3, 2026
e9aba08
fix(graph): scope C++ path coverage to the Windows guard
samchon Aug 3, 2026
8b51eaa
Fix exact producer experiment provisioning
samchon Aug 3, 2026
887c3b2
Pin Rust experiment command at the workflow boundary
samchon Aug 3, 2026
6d24b12
Accept exact shallow Rust commit abbreviations
samchon Aug 3, 2026
246d319
Open every changed feature case with its contract comment
samchon Aug 3, 2026
53e70f1
Build the pinned Clang producer with the whole runner
samchon Aug 3, 2026
edecb85
Correct every contract comment to what its case actually pins
samchon Aug 3, 2026
f4b6995
Bound the producer build by memory and stop overclaiming its evidence
samchon Aug 3, 2026
748b00f
Restore the pinned Clang producer instead of rebuilding it
samchon Aug 4, 2026
0bb642c
Make the guards this cycle added actually hold
samchon Aug 4, 2026
919a817
Give the C/C++ producer the time its corpus index needs
samchon Aug 4, 2026
cda5a4a
Stop the topology plane claiming more than it holds
samchon Aug 4, 2026
66ca4d9
Tell a topology caller which of four things went wrong
samchon Aug 4, 2026
48fb9bf
Size the C/C++ waits for nine refreshes, not one
samchon Aug 4, 2026
587c6f1
Back off when a producer says it is not ready
samchon Aug 4, 2026
bed491b
Measure the host instead of proposing a fifth theory
samchon Aug 4, 2026
175bfeb
Bound the Clang producer's indexing width by host memory
samchon Aug 4, 2026
40ebafd
Pin the Clang producer that bounds its resident views
samchon Aug 4, 2026
4d24f50
bump up ttsc
samchon Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 56 additions & 1 deletion .github/workflows/experiment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,21 @@ jobs:
if: ${{ needs.latest_update.outputs.run == 'true' }}
name: ${{ matrix.language }} LSP
runs-on: ubuntu-latest
timeout-minutes: 45
# Fourteen rows install a released producer and finish in minutes; the
# ninety-minute bound is theirs and stays exactly where it is. C and C++
# build a compiler from source, and that is a property of the row rather
# than a defect inside it. Measured: three minutes of checkout, install and
# package build, then 56 minutes to a linked `clangd` on one runner and 107
# on another in the same workflow, then the real-corpus lifecycle run.
# Ninety did not fit. 150 covers the fast runner comfortably and the slow
# one barely, and it is still a bound, so a lane that hangs is caught. Only
# the two rows that build a compiler get it.
#
# The restore below is what should keep an ordinary push away from that
# cost, and it is an expectation rather than a property: Actions caches are
# branch-scoped and evicted, so a first push on a fresh branch still pays
# the whole build, on whichever runner it draws.
timeout-minutes: ${{ (matrix.language == 'c' || matrix.language == 'cpp') && 150 || 90 }}
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -138,15 +152,56 @@ jobs:
if: ${{ github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language }}
run: pnpm build

# C and C++ are the only rows whose producer is built rather than
# downloaded, and it is a pinned commit: the same bytes, reproduced from
# scratch, on every push. Restoring them instead is not a shortcut around
# the build but a removal of work that had no reason to happen twice.
#
# The key hashes every file the built bytes depend on. `catalog.mjs` is
# the one `setup` actually reads its commit from, so it has to be here —
# keying on the adapter's constant alone would leave the two bound only
# by a text assertion in a different workflow, and a divergence would hit
# the key, fail the `--version` check, rebuild, and then not re-save,
# because an exact hit has nothing to write. That is silent, permanent,
# full-cost rebuilding, so the binding is made structural instead.
#
# Restore and save are split so the save runs even when a later step
# fails. A campaign iterating on these lanes is exactly the case where
# the producer builds and the experiment does not, and `cache`'s combined
# form would discard an hour or more of correct build because a corpus
# assertion afterwards went red.
- name: Restore the pinned Clang producer
id: clang_producer
if: ${{ (matrix.language == 'c' || matrix.language == 'cpp') && (github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language) }}
uses: actions/cache/restore@v6
with:
path: tests/experiment/.work/tools
key: clang-producer-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('packages/graph/src/provider/cpp/CPP_CLANG_PRODUCER_COMMIT.ts', 'tests/experiment/src/catalog.mjs', 'tests/experiment/src/setup-language.mjs') }}

- name: Install language server
if: ${{ github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language }}
run: pnpm --filter @samchon/graph-experiment run setup -- --language ${{ matrix.language }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Saved before the experiment runs, not after it, and only on a miss.
# The producer is proved by this point — `setup` refuses to finish unless
# the installed binary reports the pinned commit — and what follows is a
# corpus run whose failure says nothing about the compiler that was
# built. Waiting until the end would tie a correct build's survival to an
# unrelated assertion.
- name: Save the pinned Clang producer
if: ${{ (matrix.language == 'c' || matrix.language == 'cpp') && steps.clang_producer.outputs.cache-hit != 'true' && (github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language) }}
uses: actions/cache/save@v6
with:
path: tests/experiment/.work/tools
key: ${{ steps.clang_producer.outputs.cache-primary-key }}

- name: Run LSP experiment
if: ${{ github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language }}
run: pnpm --filter @samchon/graph-experiment start -- --language ${{ matrix.language }}
env:
SAMCHON_GRAPH_RUST_ANALYZER_HIR: ${{ github.workspace }}/tests/experiment/.work/tools/bin/samchon-rust-analyzer

- name: Upload result
if: ${{ always() && (github.event_name != 'workflow_dispatch' || inputs.language == 'all' || inputs.language == matrix.language) }}
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ jobs:
- name: Build
run: pnpm run build

- name: Check provider support
run: pnpm provider-support

- name: Test Go sidecar
working-directory: sidecars/go
run: go test ./...
Expand Down
Loading
Loading