feat: insert direct edit constraint solver stage
Adds resolveDirectEditConstraints between compileRoadModel and compileGeometry, per the parent design's data flow. The stage is an identity transform until the individual constraint kinds land: it returns empty road profiles, junction plans and handle manifest, so compileGeometry's geometry code is untouched and output stays byte-identical. Constraint planning is separated from solving up front. Only `exact` and `recheck` constraints may reach the solver; `disabled`, `pending`, `conflicted` and `stale` are reported as unapplied with a reason. SOLVED_KINDS starts empty and grows one entry per kind, so a partially delivered solver reports what it skipped instead of publishing half-solved geometry. diagnostic() moves to src/compile/diagnostics.js so the solver can share the compiler's diagnostic shape without depending on fs, which would break the pure-function boundary that lets preview, the full compile and the CLI export share one implementation. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -324,7 +324,11 @@ function readUpload(request, session) {
|
||||
function compileWorkbenchInput(input) {
|
||||
const workspace = path.dirname(input.osmFile);
|
||||
const initialized = ensureRevisionStore(workspace, input.options);
|
||||
return compileInput({ ...input, areaConfigSnapshotFile: initialized.paths.activeAreaConfig });
|
||||
return compileInput({
|
||||
...input,
|
||||
areaConfigSnapshotFile: initialized.paths.activeAreaConfig,
|
||||
editsFile: initialized.paths.activeEdits,
|
||||
});
|
||||
}
|
||||
function readMultipart(request, limit) {
|
||||
return new Promise((resolve, reject) => {
|
||||
|
||||
Reference in New Issue
Block a user