Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
3438 commits
Select commit Hold shift + click to select a range
2b1dccd
R380 In Review -> Done: approve @reference join-subquery filter condi…
claude Jun 26, 2026
c23d06f
R385 In Review -> Ready: rework requested (build red from ONNX SIGSEG…
claude Jun 26, 2026
84fc9a1
R13 Spec revise: re-anchor facets onto the contained connection machi…
claude Jun 26, 2026
8476dd1
R99: spec out sub-module sibling classpath fix (Backlog -> Spec)
claude Jun 26, 2026
2bbcd16
R385 rework: inject DevMojo RAG warms; close them on the bind-failure…
claude Jun 26, 2026
aad66e5
R385 In Progress -> In Review: rework landed (DevMojo warm seam + bin…
claude Jun 26, 2026
4001966
R13 Spec revise: author-driven facet-value nullability, single-commit…
claude Jun 26, 2026
4b283ae
R99 Spec revise: scope the parity WARN to the reactor set; fix tier l…
claude Jun 26, 2026
4f814bf
R385 In Review -> Done: approve docs.search MCP tool, archive spec
claude Jun 26, 2026
e4b205f
R13 Spec -> Ready: faceted search sign-off
claude Jun 26, 2026
46186d9
R386: catalog.search semantic catalog discovery (R118 slice 10)
claude Jun 26, 2026
ce4c47c
R99 Spec -> Ready: sign off sibling-classpath fix; refresh drifted De…
claude Jun 26, 2026
bbc988f
R388: file Backlog item for discriminated-interface @reference runtim…
claude Jun 26, 2026
0e4708d
R388: bump roadmap next-id to R389
claude Jun 26, 2026
1c888ab
R388: record joined-inheritance root cause and narrow defect-2 guard
claude Jun 26, 2026
d4a30cf
R388 -> Spec: implementation plan; file R389 (joined-table inheritance)
claude Jun 26, 2026
9d9f51d
R388 -> Ready: Spec sign-off (independent review)
claude Jun 26, 2026
619a968
R45 Spec rework: resolve Q4 onto a TenantIdSource overlay, reconcile …
claude Jun 26, 2026
b3fbd9d
R45 Spec: fix dead R190 link and tighten loader-name cites
claude Jun 26, 2026
1178ee3
Clarify trunk fast-forward overrides per-session branch instructions
claude Jun 26, 2026
5348ae4
R390: retain connection carrier element subgraph in the rebuilt assem…
claude Jun 26, 2026
272d0d1
R390 -> In Review: manual flip for In Review -> Done handoff
claude Jun 26, 2026
088c405
R45 Spec: drop non-existent classifier-check annotations from validat…
claude Jun 26, 2026
d0c5630
roadmap: add R391 facade default-case newGraphQL() helper
claude Jun 26, 2026
62a8d1c
R391 Backlog -> Spec: facade default-case newGraphQL() helper
claude Jun 26, 2026
bb85db2
R390 In Review -> Done: approve connection carrier element-subgraph r…
claude Jun 26, 2026
ca8d336
Scrub retired @LoadBearingClassifierCheck framing from live roadmap i…
claude Jun 26, 2026
aca152b
R388 In Progress -> In Review: qualify discriminator column, reject @…
claude Jun 26, 2026
366e9bf
R391 Spec -> Ready: sign off facade default-case newGraphQL() helper
claude Jun 26, 2026
a4356ea
R13: make facet output fields nullable for failure isolation
claude Jun 26, 2026
2fe91e5
R388 In Review -> Done: approve discriminator-column qualification + …
claude Jun 26, 2026
e3ee54d
R391 In Progress -> In Review: facade default-case newGraphQL() helper
claude Jun 26, 2026
61ad1ec
R383 Spec -> Ready: sign off nested-input @field multitable filter lo…
claude Jun 26, 2026
08654a2
R389 Backlog -> Spec: first-class discriminated joined-table inheritance
claude Jun 26, 2026
10632f0
R392: route discriminated TypeResolver off a synthetic discriminator …
claude Jun 26, 2026
181b2d3
R392 -> In Review: rewrite spec body to reflect the shipped fix
claude Jun 26, 2026
e61227f
R389 Spec review: correct ForeignKey-holder claim, note R392 emission…
claude Jun 26, 2026
8a75a6c
R383 -> In Review: implementation already landed with the spec
claude Jun 26, 2026
22db84e
R391 In Review -> Done: approve facade default-case newGraphQL() helper
claude Jun 26, 2026
b05e7ac
Reframe trunk standing permission and require workflow for all fixes
claude Jun 26, 2026
824a983
R392 In Review -> Done: approve synthetic discriminator-alias routing
claude Jun 26, 2026
3c57cd0
R393: roadmap-tool verify tripwires throw BuildFailure, not System.exit
claude Jun 26, 2026
64f29b5
R389 Spec revise + file R393: defer base-to-detail FK override
claude Jun 26, 2026
f71cd50
roadmap: resolve duplicate R393 id (tripwire -> R394)
claude Jun 26, 2026
165e29f
R389 Spec -> Ready: sign off first-class discriminated joined-table i…
claude Jun 26, 2026
89c891c
R383 In Review -> Done: approve nested-input @field multitable filter…
claude Jun 26, 2026
5b8db98
R384 Backlog -> Spec: converted/@nodeId/@condition multitable filters
claude Jun 26, 2026
480b748
R389 Ready -> In Progress: begin joined-table inheritance implementation
claude Jun 26, 2026
82b0d66
R389: add JoinedTableBound participant variant + TableBacked capability
claude Jun 26, 2026
8227cfe
R389 reopen to Spec: explicit child->parent reference design
claude Jun 26, 2026
b987c36
R13: pin facet-field nullability with an explicit Phase 2 assertion
claude Jun 26, 2026
fc6fbd6
R389 spec: inherited @reference is the existing path, not a new arm
claude Jun 26, 2026
8057829
R384 Spec review: request phase-a revision (fromArray convergence claim)
claude Jun 26, 2026
6098c48
R45 Spec -> Ready: sign off multi-tenant routing on the ExecutionInpu…
claude Jun 26, 2026
e6c1422
R389 spec: execution test is step one, with a concrete fixture
claude Jun 26, 2026
d316b12
R389 spec: settle fixture as new single-column shared-PK tables (Opti…
claude Jun 26, 2026
8d422da
R384 Spec revise: rework phase a deprecation handling (suppress, not …
claude Jun 26, 2026
88d1b6e
R389 spec: composite shared-key support is in scope, not deferred
claude Jun 27, 2026
786b043
R384 Spec revise: fix JooqConvert deprecation at source via DSL.val, …
claude Jun 27, 2026
e727c73
R393 repurposed: @reference disambiguation of the base->detail join
claude Jun 28, 2026
3d7f474
roadmap audit: refresh staleness audit to 2026-06-29, supersede 2026-…
claude Jun 29, 2026
a32382d
R395 Backlog: discriminator column must qualify to the FROM table, no…
folkef6 Jun 29, 2026
69ec31f
R395 Backlog -> Spec: discriminator qualifies off tableLocal, not @ta…
folkef6 Jun 29, 2026
c86786c
R395 Spec -> Ready: sign-off, plan grounded against live code
folkef6 Jun 29, 2026
2675bbb
R395: qualify discriminator column off the FROM table instance, not t…
folkef6 Jun 29, 2026
534f3b2
R386 In Review -> Done: approve catalog.search semantic catalog disco…
claude Jun 29, 2026
2b49375
R396 Backlog -> Spec: identity-based FK-connection check for schema-q…
folkef6 Jun 29, 2026
5cc51d5
R395 In Review -> Ready: rework, two fixture comments contradict ship…
folkef6 Jun 29, 2026
d6a6a61
R395 Ready -> In Review: fix two fixture comments to shipped @table(n…
folkef6 Jun 29, 2026
67bc743
R396 Spec revise: enumerate sites 4-5, Phase-1 fallback, R395 dependency
claude Jun 29, 2026
15b3b10
R378: expand Backlog body with decided design and blocking error-surf…
claude Jun 29, 2026
2c98df3
R395 In Review -> Done: approve discriminator FROM-clause qualificati…
folkef6 Jun 29, 2026
7165b46
R396 Spec review: enumerate site 6 (qualifierForFk) on the shim path
claude Jun 29, 2026
6404d08
R378 Backlog -> Spec: nodeId filter decode throws on malformed and wr…
claude Jun 29, 2026
4a0f29a
R378 Spec revise: correct "@error is mutation-only" claim (it is not)
claude Jun 29, 2026
0d5e00f
R378 Spec -> Ready: sign off nodeId filter malformed-vs-mismatched de…
claude Jun 29, 2026
6541b7b
R378: throw on malformed/wrong-type @nodeId filter ids and surface as…
claude Jun 29, 2026
f3594b9
Add R398: SDL lint engine with ESLint-style built-in visitors
claude Jun 29, 2026
e7f34ea
R389 Spec review: verify standalone-use acceptance check satisfied; n…
claude Jun 29, 2026
6ca487c
R398: add curated starter rule set (a dozen built-in visitors)
claude Jun 29, 2026
66c51c1
R398 -> Spec; retire superseded R121 and R296
claude Jun 30, 2026
66ea4d7
R389 Spec -> Ready: sign off first-class discriminated joined-table i…
claude Jun 30, 2026
d4d8e31
R396 Spec -> Ready: sign off identity-based FK-connection check for q…
claude Jun 30, 2026
4d38111
Add R399: reusable JAX-RS GraphQL-over-HTTP serving library
claude Jun 30, 2026
9cb5343
R398: rework spec after architect review (Spec-quality pass)
claude Jun 30, 2026
268613b
R399 Backlog -> Spec: pick up JAX-RS serving library for spec authoring
claude Jun 30, 2026
3999e17
R398: add optional per-rule suggested-fix capability to the spec
claude Jun 30, 2026
2850082
R378 In Review -> Done: approve nodeId filter malformed-vs-mismatched…
claude Jun 30, 2026
90ac21f
R30 sweep: remove Done selection-parser-audit tombstone
folkef6 Jun 30, 2026
3ba03ed
R146, R52 Backlog -> Discarded: remove superseded items
folkef6 Jun 30, 2026
c762324
R99: widen LSP scan/walk to sibling modules from a sub-module dev run
claude Jun 29, 2026
e9e0339
R261 Backlog -> Spec: pin wire-coercion cast guard design
claude Jun 30, 2026
0720d25
docs: document LSP native runtime requirement in the reference
claude Jun 29, 2026
66ed2c8
roadmap: add R401 (bundle tree-sitter runtime) in Spec
claude Jun 30, 2026
9e6033a
R399: write Spec body for graphitron-jakarta-rest serving library
claude Jun 30, 2026
ba14061
R99 In Review -> Done: approve sibling-module LSP scan/walk widening
claude Jun 30, 2026
eb566d5
R400 Backlog -> Spec: remove the @tableMethod directive
claude Jun 30, 2026
e592758
R262: spec out @nodeId-non-ID rejection; Backlog -> Spec
claude Jun 30, 2026
f14b3b1
R399: lock body-marshalling decision (no custom JAX-RS providers)
claude Jun 30, 2026
84263fc
R401 Spec -> Ready: bundle tree-sitter runtime spec signed off
claude Jun 30, 2026
28a579e
R262 Spec -> Ready: sign off @nodeId-non-ID rejection spec
claude Jun 30, 2026
4078af0
R398: address Spec review (stale ref, detection mechanism, double-emit)
claude Jun 30, 2026
a265d01
R269: refresh spec — drop @record framing, fix line refs, note R400
claude Jun 30, 2026
44d5d16
R399: apply Spec review revisions (GraphiQL toggle, status codes, tests)
claude Jun 30, 2026
7a23d42
R389 In Progress: reshape JoinedTableBound to the approved design
claude Jun 30, 2026
fa30a28
R398: deprecation detection via the established marker convention
claude Jun 30, 2026
bebaeea
R401 Half A: build + bundle the tree-sitter runtime in the natives re…
claude Jun 30, 2026
70e31a3
R269: apply Spec-review revisions — re-anchor on shipped model
claude Jun 30, 2026
f8ad9fa
R269: Spec-review sign-off — Spec → Ready
claude Jun 30, 2026
d3e05aa
R262: reject @nodeId on non-ID coordinates and encoded federation @ke…
claude Jun 30, 2026
a4bf932
R389 In Progress: joined-table inheritance — classifier, emitter, par…
claude Jun 30, 2026
28889ad
R389: pipeline-tier classification tests for joined-table inheritance
claude Jun 30, 2026
a044e8f
R389: record implementation status on the plan
claude Jun 30, 2026
a247c32
R262: move to In Review
claude Jun 30, 2026
112d96c
R256: absorb the service walker substrate onto typed rejections + mul…
claude Jun 30, 2026
553ae77
R262 In Review -> Done: approve @nodeId-non-ID rejection
claude Jun 30, 2026
0706e3e
R256 In Review -> Done: approve service walker substrate absorption
claude Jun 30, 2026
2bbc794
R269: null-guard split-query accessor key extraction for nullable to-…
claude Jun 30, 2026
89a8319
R401: fix Windows runtime build to use MINGW64 native unprefixed gcc/ar
claude Jun 30, 2026
cc44214
R399 Spec -> Ready: sign off graphitron-jakarta-rest serving library
claude Jun 30, 2026
913a59b
R370 Backlog → Spec: nested backing-class $-qualified cast
claude Jun 30, 2026
6f11848
R398: make the MCP a first-class finding consumer in the spec
claude Jun 30, 2026
c4eb59c
R389: composite shared-key joined-table inheritance (jti_* re-author)
claude Jun 30, 2026
bf57317
R389: rejection tests for the PK=FK and non-base-reference invariants
claude Jun 30, 2026
3d67b04
R269 In Review -> Done: approve null-guard split-query accessor key e…
claude Jun 30, 2026
7257112
R389: corpus example + architecture-doc prose for joined-table inheri…
claude Jun 30, 2026
bb575a8
R389 In Progress -> In Review: joined-table inheritance implemented
claude Jun 30, 2026
aa2af6d
R63 Spec revise: model UPSERT as RejectsFamily(ORACLE), refresh stale…
claude Jun 30, 2026
eb35b8d
Reconcile R400 directive-surface work onto trunk; absorb upstream R400
claude Jun 30, 2026
034707e
R399 In Progress -> In Review: graphitron-jakarta-rest GraphQL-over-H…
claude Jun 30, 2026
42fd80c
R261 Spec -> Spec: reviewer revision pass on wire-coercion cast guard
claude Jun 30, 2026
57b07d7
R63 Spec revise: correct classifier-side shape in the lift plan
claude Jun 30, 2026
3773050
R398: pin the MCP-access claim with a test (Testing strategy)
claude Jun 30, 2026
19fe7b4
R399: switch body marshalling from Jackson to the JSON-B API
claude Jun 30, 2026
3d53101
R401: fix post-deploy verifier to supply the runtime via the jtreesit…
claude Jun 30, 2026
5020564
R398: clarify the richer-TypeInfo note (self-review)
claude Jun 30, 2026
d98b33e
R399: guard empty POST body; flag statusFor watershed for review
claude Jun 30, 2026
43fa061
R400: sharpen acceptance criterion 5 (pre-srp self-review fix)
claude Jun 30, 2026
21d6456
R398: tighten three claims after architect self-check
claude Jun 30, 2026
c867a74
R389 self-review: correct shared-key base projection + dedupe inherit…
claude Jun 30, 2026
e1534bf
R401 Half B: consume the bundled tree-sitter runtime; collapse the sy…
claude Jun 30, 2026
070e29d
R401 In Progress -> In Review: bundle tree-sitter runtime implemented
claude Jun 30, 2026
773fa05
R398: Spec review requests revisions before Ready
claude Jun 30, 2026
a626831
R389 In Review -> Ready: rework for missing jOOQ schema-version bump
claude Jun 30, 2026
744271c
R401 In Review -> Done: approve bundled tree-sitter runtime
claude Jun 30, 2026
efdd930
R389: bump jooq.codegen.schema.version for the init.sql change
claude Jun 30, 2026
f3f0ea4
R398: address Spec-review round 2 (sealed BuildWarning + 3 more)
claude Jun 30, 2026
72bb16b
R389 Ready -> In Review: schema-version rework addressed
claude Jun 30, 2026
3b5ce75
R398 Spec -> Ready: sign off on SDL lint engine spec
claude Jun 30, 2026
153a585
R389 In Review -> Done: approve first-class discriminated joined-tabl…
claude Jun 30, 2026
173a887
R400 Spec -> Ready: sign off on withhold-not-in-use-directives surfac…
claude Jun 30, 2026
06b4728
R399 In Review -> Done: approve graphitron-jakarta-rest GraphQL-over-…
claude Jun 30, 2026
f27103e
R400 Ready -> In Progress: implement Stage 2 doc removal
claude Jun 30, 2026
a9da3f1
R400: Stage 2 — remove withheld directives' dedicated documentation
claude Jun 30, 2026
71e2397
R400 In Progress -> In Review: Stage 2 doc removal complete
claude Jun 30, 2026
262f711
R398 In Progress: seal BuildWarning, tag classifier advisories, proje…
claude Jun 30, 2026
61f276a
R398 In Progress: extract DeprecationRecognizer to the graphitron bui…
claude Jun 30, 2026
584068b
R398 In Progress: SDL lint engine with nine syntactic visitors
claude Jun 30, 2026
326a2a7
R400 In Review -> Ready: rework — DirectiveDocCoverageTest fails on w…
claude Jun 30, 2026
a1fd1c9
R400: exempt withheld-from-v1 directives from DirectiveDocCoverageTes…
claude Jun 30, 2026
0eb1f24
R400: record DirectiveDocCoverageTest carve-out + trunk-redness note …
claude Jun 30, 2026
9b23bdd
R400: address rework — AC2 rewording + green-build verification note
claude Jun 30, 2026
23789b4
R400 Ready -> In Review: rework complete (DirectiveDocCoverageTest gr…
claude Jun 30, 2026
33b082c
R400 In Review -> Done: approve withhold-not-in-use-directives surfac…
claude Jun 30, 2026
e8f978d
R182: move to Spec; gate cleared (legacy-reactor retirement milestone…
claude Jun 30, 2026
d4d776b
R182: refine spec — two-commit plan (delete, then unwrap), no R19 squash
claude Jun 30, 2026
d596507
roadmap audit: refresh staleness audit to 2026-07-01, supersede 2026-…
claude Jul 1, 2026
940e0b3
R182 Spec -> Spec: reviewer revision pass on unnest-rewrite-aggregator
claude Jul 1, 2026
8557c6e
R182 Spec -> Spec: reviewer revision pass, docs directory collision
claude Jul 1, 2026
9607117
docs: add MCP agent-context how-to, wire it into the dev loop
folkef6 Jul 1, 2026
7aa2116
R63 Spec -> Ready: sign off on typed UPSERT dialect requirement
claude Jul 1, 2026
304b40b
R26 In Review -> Done: close the retire-maven-plugin umbrella
claude Jul 1, 2026
031fad8
roadmap: file R405/R406 for single-table interface mutation returns
claude Jul 1, 2026
42c68d7
roadmap: capture R405 flow and discrimination mechanism
claude Jul 1, 2026
e4dfce0
R261 Spec -> Ready: sign off on wire-coercion cast guard
claude Jul 1, 2026
9bd79ae
roadmap: R405 Backlog -> Spec (service single-table interface return)
claude Jul 1, 2026
3a2d544
R407, R408 Backlog -> Spec: lint noise fix + suppression follow-on
claude Jul 1, 2026
859888c
R370 Spec revise: require a compiling witness for both AccessorRef pr…
claude Jul 1, 2026
8382a9a
roadmap: R405 Spec -> Ready (sign off single-table interface service …
claude Jul 1, 2026
b181751
R370 Spec sign-off: flip to Ready
claude Jul 1, 2026
e0b01b2
Add R409: quiet graphitron:dev RAG-warm log noise
claude Jul 1, 2026
0515d60
R406: spec out DML single-table discriminated interface return
claude Jul 1, 2026
c8bbc91
Spec R409: quiet graphitron:dev RAG-warm log noise
claude Jul 1, 2026
2c74e8d
R182 Spec -> Spec: fold Diataxis docs restructure into scope
claude Jul 1, 2026
8badbec
R63: lift DML dialect requirement onto the model as typed data
claude Jul 1, 2026
ab693e2
R332 Spec -> Spec: correct BuildWarning construction in implementatio…
claude Jul 1, 2026
6f98bfc
R182 Spec -> Spec: reviewer revision pass, complete docs xref audit
claude Jul 1, 2026
516ccbe
R332 Spec -> Spec: fix BuildWarning arm misattribution in impl draft
claude Jul 1, 2026
cd08b80
Sign off R409: Spec -> Ready
claude Jul 1, 2026
2a9142b
Add R410: graphitron:dev owns incremental compilation of generated so…
claude Jul 1, 2026
cd6fd50
R406 Spec -> Ready: sign off DML single-table discriminated interface…
claude Jul 1, 2026
b9386c6
R63 In Review -> Done: approve typed DML dialect requirement lift
claude Jul 1, 2026
5a9313f
R332 Spec -> Ready: sign off @table-on-input deprecation signal
claude Jul 1, 2026
b889c89
R261 Slice 1: generation-time wire-coercion cast guard for @service s…
claude Jul 1, 2026
2c794bd
R398 In Progress: populate LintFix for the fix-bearing rules
claude Jul 1, 2026
84580ed
R182 Spec -> Spec: fold roadmap-tool generated architecture xrefs int…
claude Jul 1, 2026
b07d55b
R384 Spec -> Ready: sign off converted/@nodeId/@condition multitable …
claude Jul 1, 2026
99e540d
R409 In Progress: quiet graphitron:dev RAG-warm log noise
claude Jul 1, 2026
74eaff2
R409 In Progress -> In Review: quiet graphitron:dev RAG-warm log noise
claude Jul 1, 2026
fc17ad6
R410 Spec revise: address Spec-review findings
claude Jul 1, 2026
81f5004
R398 In Progress: LSP finding-keyed QuickFix branch projecting LintFix
claude Jul 1, 2026
34c797f
R410 Spec -> Ready: sign off on incremental-compile spec
claude Jul 1, 2026
7d70138
R332: deprecation signal for @table on input types
claude Jul 1, 2026
880533d
R398 In Progress: align @record with the deprecation-marker convention
claude Jul 1, 2026
9230327
R398 In Progress: pin lint findings reach the report and project to t…
claude Jul 1, 2026
59365a1
R398 In Progress -> In Review: SDL lint engine, fixes, and LSP projec…
claude Jul 1, 2026
8b2d718
Approve R409: In Review -> Done, quiet graphitron:dev RAG-warm log noise
claude Jul 1, 2026
6265190
R261 In Review -> Done: approve wire-coercion cast guard (@service sl…
claude Jul 1, 2026
3292522
R332: account for @table-on-input deprecations in the fixture warning…
claude Jul 1, 2026
0ff2885
R405: support single-table discriminated interface as a @service poly…
claude Jul 1, 2026
706a5f3
R410 Ready -> Spec: rework output ownership to a graphitron-exclusive…
claude Jul 1, 2026
bc32d4a
R398 In Review: register quick fixes explicitly, decouple from deprec…
claude Jul 1, 2026
36c78e9
R182 Spec -> Spec: reviewer revision pass, correct roadmap-tool mappe…
claude Jul 1, 2026
21ed3cf
R370: resolve nested backing classes to Outer.Nested, not Outer$Nested
claude Jul 1, 2026
aa0fb51
R406 In Review -> rework: consume R405's shared re-projection helper,…
claude Jul 1, 2026
2ed67ec
R182 Spec -> Spec: add renderAdocStatusBoard to roadmap-tool xref audit
claude Jul 1, 2026
1a314ea
R410 Spec: specify how compile diagnostics surface
claude Jul 1, 2026
5a3b048
R182 Spec -> Ready: sign off unnest-rewrite-aggregator
claude Jul 1, 2026
3601c14
R370 In Review -> Ready: rework, two unmasked in-hand nested-class em…
claude Jul 1, 2026
cb780fc
R405 In Review -> Done: approve single-table discriminated interface …
claude Jul 1, 2026
bbba521
R332 In Review -> Done: approve @table-on-input deprecation signal
claude Jul 1, 2026
8f26cbb
Lagt til Alf og Filip som developers på rewrite
alf Jul 1, 2026
f7c59fb
R410 Spec -> Ready: sign off on incremental-compile spec
claude Jul 1, 2026
98d776f
Approve R398: In Review -> Done, SDL lint engine with ESLint-style bu…
claude Jul 1, 2026
c125608
R406: support single-table discriminated interface as a DML @mutation…
claude Jul 1, 2026
39d4b2a
R410: reframe driver to in-process MCP query execution; resolve Quark…
claude Jul 1, 2026
9752e3e
R413 Backlog: parent-input VALUES drops converter-backed column DataType
folkef6 Jul 1, 2026
fe25666
R370: resolve nested backing classes to Outer.Nested at the two remai…
claude Jul 1, 2026
f151da3
Approve R406: In Review -> Done, DML single-table discriminated inter…
claude Jul 1, 2026
b530b36
R407: strike KeyNodeSynthesiser from injected-names union
claude Jul 1, 2026
c3946a3
Approve R370: In Review -> Done, resolve nested backing classes to Ou…
claude Jul 1, 2026
e414cef
R408 Spec: settle excludedTypes/classifier-advisory scope asymmetry
claude Jul 1, 2026
1e5fa9a
R407 Spec -> Ready: sign off exclude injected federation/link defs fr…
claude Jul 1, 2026
4c817ea
R414 + R415 Backlog: nested-connection totalCount + first/last pagina…
folkef6 Jul 1, 2026
828fb47
R182: transition to In Progress
claude Jul 1, 2026
0bc9195
R182: discard R19 (history-squash), superseded by unnest approach
claude Jul 1, 2026
2d932de
R182 commit 1: delete legacy graphitron-parent reactor
claude Jul 1, 2026
90f951f
R182 commit 2: unwrap rewrite reactor to repo root
claude Jul 1, 2026
dad5cbb
R182 commit 3: restructure architecture docs into Diataxis docs/archi…
claude Jul 1, 2026
c862c1c
R182: update CI/CD workflows for the unnested reactor
claude Jul 1, 2026
a1e9297
R182: update docs and tooling paths for the unnested reactor
claude Jul 1, 2026
9d6fb68
R182: transition to In Review
claude Jul 1, 2026
12a41e7
R407: update stale build command for the unnested reactor
claude Jul 1, 2026
e112c3b
R408 Spec revise: repoint dissolved getting-started.adoc doc home to …
claude Jul 1, 2026
92fbb6b
Approve R182: In Review -> Done, retire legacy reactor and unnest to …
claude Jul 1, 2026
155ad88
R408 Spec -> Ready: sign off lint finding suppression mechanism
claude Jul 1, 2026
9a0236d
R407 Ready -> In Progress: exclude injected federation/link defs from…
claude Jul 1, 2026
cd718cc
R407: exclude generator-injected federation/link definitions from lin…
claude Jul 1, 2026
b96d1d7
R407 In Progress -> In Review: injected federation/link lint exclusio…
claude Jul 1, 2026
622e358
Remove orphaned graphitron-example files left by main #499 after R182…
claude Jul 1, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
76 changes: 76 additions & 0 deletions .claude/agents/principles-architect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
name: principles-architect
description: Architectural consultant for graphitron-rewrite design decisions. Evaluates a proposed design (Spec draft, design fork during implementation, refactor sketch) against the project's strategic and technical principles, and surfaces where it pushes against them. Read-only. Call this agent proactively when drafting a Backlog → Spec plan body, when an implementer hits a design fork in In Progress, or as a self-check before requesting a Spec → Ready handoff. Detailed prompts get better results; describe the design and what the agent should focus on.
tools: Read, Grep, Glob, LS
model: opus
---

You are an architectural consultant for graphitron-rewrite. Your job is to evaluate a proposed design against the project's principles and surface, concretely, where the design pushes against them and what a stronger shape would look like.

You are not a reviewer. The Spec → Ready and In Review → Done gates are handled by the `srp` and `reviewer-prompt` skills, which hand off to a fresh agent to satisfy the reviewer-rule guard. You are the *forward* voice the author consults *while drafting*, not the gatekeeper after.

## CRITICAL: scope of your output

- DO surface architectural opportunities the author may have missed: places the design pushes against a principle, places the type system could carry more certainty, places a producer narrows a shape that downstream consumers consume without the narrowed type, places the validator should mirror the classifier.
- DO sketch the stronger shape in one or two sentences when the alternative is concrete.
- DO cite the principle by heading from the docs you read (e.g. "Generation-thinking", "Sealed hierarchies over enums", "Classification belongs at the parse boundary").
- DO be willing to say "the design is clean against the principles"; do not invent findings to fill space.
- DO NOT bug-hunt, style-police, or rubber-stamp.
- DO NOT propose features or scope expansions ("you could also support X").
- DO NOT produce review verdicts (no "approve" / "reject"); the gate skills do that.
- DO NOT modify files. You are read-only.

## Read first (in this order, every invocation)

These are the principle sources. Read them before evaluating the design; the order matters because the strategic frame reframes the technical one:

1. `docs/graphitron-principles.adoc` ; strategic principles (DB-as-ally, stability through simplicity, separate business logic from API code)
2. `docs/architecture/explanation/rewrite-design-principles.adoc` ; technical principles (generation-thinking, sealed hierarchies, classification boundaries, classifier guarantees shape emitter assumptions, validator-mirrors-classifier, test tiers)
3. `docs/architecture/index.adoc` ; pipeline orientation
4. Any doc the design touches directly (`code-generation-triggers.adoc`, `argument-resolution.adoc`, `runtime-extension-points.adoc`, `testing.adoc`, `workflow.adoc`) ; only the ones relevant to the design under review

Then read the code or spec the caller pointed you at. Read fully (no `limit`/`offset`); the principles are most useful when you can see the actual shapes the design touches.

## What to look for

Use the same taxonomy as `.claude/skills/reviewer-prompt/SKILL.md`'s "What to look for" list, applied *forward* to a design rather than *backward* to a diff. Highest-leverage families:

- **Generation-thinking gaps.** Does the model the design proposes carry what the generator needs (pre-resolved, generation-ready), or does it leave the generator parsing strings, recomputing names, or branching on predicates over pre-resolved data? If two consumers would evaluate the same predicate over a model field, the branch belongs in the model.
- **Enum where a sealed hierarchy belongs.** Variants that carry different data forced into one shared field set. Look for "this enum value implies these fields are non-null."
- **Classification leaks.** Does the design route raw `Table<?>`, `ForeignKey<?,?>`, `java.lang.reflect.Type`, or graphql-java schema types past `ServiceCatalog` / `JooqCatalog` / `TypeBuilder` / `FieldBuilder`? Those four are the only classes permitted to hold them.
- **Capability vs. sealed-switch confusion.** Is the design proposing an `instanceof` chain where a capability interface (`SqlGeneratingField`, `MethodBackedField`, `BatchKeyField`, ...) would express "uniformly true across variants"? Or a capability where the generator actually forks on identity?
- **Component types too broad.** A field component declared at the sealed root when the classifier guarantees a narrower variant. The type system should carry the certainty.
- **Sub-taxonomy candidates.** Resolution outcomes stored as raw strings, nullable bag records, or tri-state returns that should be a sealed `Resolved`.
- **Validator gaps.** New classifier branches or invariants without a matching validate-time rejection. Every classifier decision that implies a generator branch must fail at validate time if unimplemented.
- **Missing type-system lift.** A producer (resolver, catalog, classifier) narrows a return type, record component, or sealed sub-variant in spirit, but the declared signature stays wide. The contract belongs in the signature.
- **Wire-format leaks.** Opaque wire shapes (NodeId, cursors, federation reps) reaching past the DataFetcher boundary into the model.
- **Test-tier mismatch.** A behaviour change without a pipeline-tier test, or per-variant unit tests for behaviour that pipeline / compile / execute tiers should cover. Code-string assertions on generated method bodies are banned at every tier.
- **Stale references.** Does the design name tests, classes, or methods that don't exist? If the same plan creates them, prefer "C3 adds `X`" phrasing over "as asserted by `X`".
- **Generated-output Java version.** Generator code may use Java 25; emitted source must be valid Java 17.

## What NOT to flag

- Formatting, import order, naming preferences.
- Restating what the design does.
- Speculative features the design didn't claim.
- Conformance to the literal text of a principle when the spirit is met.
- Trade-offs the principles explicitly accept (type erasure at jOOQ helper boundaries; selection-driven SQL for wide tables; etc.).

## Output format

Prioritized list, highest-leverage first. For each opportunity:

- **Summary.** One line.
- **Pointer.** Where in the design (Spec section, file:line, the part of the sketch the caller showed you).
- **Principle.** The heading from `rewrite-design-principles.adoc` or `graphitron-principles.adoc`.
- **Why the proposed shape is weaker.** One or two sentences. Concrete, not abstract.
- **Sketch of stronger shape.** One or two sentences, optional if obvious.

Stop once you've covered the architecturally interesting issues. A short, high-signal list beats a long checklist. If the design is genuinely clean against the principles, say so plainly and stop ; the author's time is the resource you're saving.

## Hard rules

- You are read-only. Do not propose to edit files; the caller will do that with your output in hand.
- Do not produce a verdict. Reviewer-rule gates are not yours to enforce; the `srp` / `reviewer-prompt` skills handle the handoff.
- Do not improvise the principle list. The headings in `rewrite-design-principles.adoc` and `graphitron-principles.adoc` are the canonical taxonomy; cite them by name so the author can navigate to the source.
- If the caller's question is too vague to ground in a principle ("is this good?"), ask a focused follow-up rather than guessing.
98 changes: 98 additions & 0 deletions .claude/scripts/session-start-web-env.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#!/usr/bin/env bash
# SessionStart hook: bring a Claude Code Web sandbox up to a buildable state for
# graphitron-rewrite. Every step is idempotent and no-ops on local development (where
# the cluster tooling / sandbox JDK layout is absent) or when the resource is already
# present. See .claude/web-environment.md for the rationale behind each step.

set -u

emit() { printf '%s\n' "{\"systemMessage\":\"$1\"}"; }

# Repo root, resolved from this script's own location so paths work regardless of cwd.
REPO_ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)

# 1. JDK 25. The parent pom's enforcer requires Java >= 25. Older sandbox images default
# to Java 21 and pin it via /etc/profile.d/java.sh (sourced by every shell), so install
# 25 if missing and retarget the alternatives + that profile file. Subsequent shells in
# the session then pick up JAVA_HOME=25 automatically.
JDK25=/usr/lib/jvm/java-25-openjdk-amd64
if [ ! -x "$JDK25/bin/java" ]; then
sudo apt-get install -y openjdk-25-jdk-headless >/dev/null 2>&1 \
|| { sudo apt-get update >/dev/null 2>&1 || true; sudo apt-get install -y openjdk-25-jdk-headless >/dev/null 2>&1; }
fi
if [ -x "$JDK25/bin/java" ]; then
sudo update-alternatives --set java "$JDK25/bin/java" >/dev/null 2>&1 || true
sudo update-alternatives --set javac "$JDK25/bin/javac" >/dev/null 2>&1 || true
if [ ! -f /etc/profile.d/java.sh ] || ! grep -q 'java-25' /etc/profile.d/java.sh 2>/dev/null; then
printf 'export JAVA_HOME=%s\nexport PATH=${JAVA_HOME}/bin:${PATH}\n' "$JDK25" \
| sudo tee /etc/profile.d/java.sh >/dev/null 2>&1
emit "JDK 25 set as default (JAVA_HOME=$JDK25); new shells use it automatically."
fi
elif command -v java >/dev/null 2>&1 && ! java -version 2>&1 | grep -q '"2[5-9]'; then
emit "JDK 25 install failed; the parent pom enforcer needs Java >= 25. See .claude/web-environment.md."
fi

# 2. PostgreSQL for -Plocal-db builds. Gated on pg_ctlcluster (Debian/Ubuntu cluster tooling)
# so it no-ops on local dev. Starts the cluster if down, sets the password JDBC expects
# (scram-sha-256 over 127.0.0.1, vs peer auth for `sudo -u postgres`), and creates + seeds
# rewrite_test when absent. The password reset only runs when we started the cluster, so a
# pre-existing local server is left untouched.
if command -v pg_ctlcluster >/dev/null 2>&1 && command -v pg_isready >/dev/null 2>&1; then
pg_was_running=1
if ! pg_isready -h localhost -p 5432 -q 2>/dev/null; then
pg_ctlcluster 16 main start >/dev/null 2>&1 || true
pg_was_running=0
fi
if pg_isready -h localhost -p 5432 -q 2>/dev/null; then
[ "$pg_was_running" -eq 0 ] && { sudo -u postgres psql -qc "ALTER USER postgres PASSWORD 'postgres';" >/dev/null 2>&1 || true; }
if ! sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='rewrite_test'" 2>/dev/null | grep -q 1; then
if sudo -u postgres psql -qc "CREATE DATABASE rewrite_test;" >/dev/null 2>&1 \
&& sudo -u postgres psql -q -d rewrite_test \
-f "$REPO_ROOT/graphitron-sakila-db/src/main/resources/init.sql" >/dev/null 2>&1; then
emit "PostgreSQL ready: rewrite_test created and seeded. -Plocal-db builds are ready."
else
emit "rewrite_test create/seed failed. See .claude/web-environment.md."
fi
fi
elif [ "$pg_was_running" -eq 0 ]; then
emit "PostgreSQL bring-up failed. See .claude/web-environment.md."
fi
fi

# 3. Maven settings: a stale proxy entry (legacy 21.0.0.129) blocks Maven Central. Replace
# the file with an empty settings; gated on the stale marker so a real config is untouched.
if [ -f "$HOME/.m2/settings.xml" ] && grep -q '21\.0\.0\.129' "$HOME/.m2/settings.xml" 2>/dev/null; then
mkdir -p "$HOME/.m2"
cat > "$HOME/.m2/settings.xml" <<'XMLEOF'
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
</settings>
XMLEOF
emit "Removed stale proxy from ~/.m2/settings.xml."
fi

# 4. libtree-sitter runtime for graphitron-lsp. jtreesitter 0.26 resolves runtime symbols
# against an OS-installed libtree-sitter; apt's libtree-sitter0 is 0.20.x (predates
# ts_language_abi_version), so build the matching version from upstream. CI uses
# `git clone`, but in web sessions the git protocol is rewritten to a repo-scoped proxy
# path that 403s on third-party repos, so fetch the release tarball over plain HTTPS
# (which is reachable) instead. Idempotent: skips when the 0.26 ABI is already present.
TS_VERSION=0.26.9
if ldconfig -p 2>/dev/null | grep -q 'libtree-sitter\.so\.0\.26'; then
: # already installed, skip
elif command -v curl >/dev/null 2>&1 && command -v make >/dev/null 2>&1 && command -v cc >/dev/null 2>&1; then
ts_tmp=$(mktemp -d)
if curl -fsSL -o "$ts_tmp/ts.tgz" "https://github.com/tree-sitter/tree-sitter/archive/refs/tags/v${TS_VERSION}.tar.gz" \
&& tar -xzf "$ts_tmp/ts.tgz" -C "$ts_tmp" \
&& make -C "$ts_tmp/tree-sitter-${TS_VERSION}" >/dev/null 2>&1 \
&& sudo make -C "$ts_tmp/tree-sitter-${TS_VERSION}" install >/dev/null 2>&1; then
sudo ldconfig
emit "Installed libtree-sitter ${TS_VERSION}; graphitron-lsp native tests are ready."
else
emit "libtree-sitter ${TS_VERSION} install failed; graphitron-lsp native tests will error. See .claude/web-environment.md."
fi
rm -rf "$ts_tmp"
fi

exit 0
27 changes: 27 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": ".claude/scripts/session-start-web-env.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"if": "Bash(git push *)",
"command": "jq -r '.tool_input.command' | { read -r cmd; if [ -z \"$cmd\" ]; then exit 0; fi; if echo \"$cmd\" | grep -q 'claude/graphitron-rewrite'; then exit 0; fi; printf '%s\\n' '{\"systemMessage\":\"Trunk fast-forward not done. Follow up with: git push origin HEAD:claude/graphitron-rewrite\"}'; }"
}
]
}
]
}
}
Loading