implements PLN-0019

This commit is contained in:
bQUARKz 2026-03-31 16:40:51 +01:00
parent 91ca49a074
commit 2b7aafaa5c
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
6 changed files with 99 additions and 35 deletions

View File

@ -11,4 +11,4 @@
{"type":"discussion","id":"DSC-0010","status":"done","ticket":"studio-code-editor-workspace-foundations","title":"Establish Code Editor workspace foundations in Studio without LSP","created_at":"2026-03-30","updated_at":"2026-03-31","tags":["studio","editor","workspace","multi-frontend","lsp-deferred"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0026","file":"discussion/lessons/DSC-0010-studio-code-editor-workspace-foundations/LSN-0026-read-only-editor-foundations-and-semantic-deferral.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]} {"type":"discussion","id":"DSC-0010","status":"done","ticket":"studio-code-editor-workspace-foundations","title":"Establish Code Editor workspace foundations in Studio without LSP","created_at":"2026-03-30","updated_at":"2026-03-31","tags":["studio","editor","workspace","multi-frontend","lsp-deferred"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0026","file":"discussion/lessons/DSC-0010-studio-code-editor-workspace-foundations/LSN-0026-read-only-editor-foundations-and-semantic-deferral.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
{"type":"discussion","id":"DSC-0011","status":"done","ticket":"compiler-analyze-compile-build-pipeline-split","title":"Split compiler pipeline into analyze, compile, and build entrypoints","created_at":"2026-03-30","updated_at":"2026-03-30","tags":["compiler","pipeline","artifacts","build","analysis"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0025","file":"discussion/lessons/DSC-0011-compiler-analyze-compile-build-pipeline-split/LSN-0025-compiler-pipeline-entrypoints-and-result-boundaries.md","status":"done","created_at":"2026-03-30","updated_at":"2026-03-30"}]} {"type":"discussion","id":"DSC-0011","status":"done","ticket":"compiler-analyze-compile-build-pipeline-split","title":"Split compiler pipeline into analyze, compile, and build entrypoints","created_at":"2026-03-30","updated_at":"2026-03-30","tags":["compiler","pipeline","artifacts","build","analysis"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0025","file":"discussion/lessons/DSC-0011-compiler-analyze-compile-build-pipeline-split/LSN-0025-compiler-pipeline-entrypoints-and-result-boundaries.md","status":"done","created_at":"2026-03-30","updated_at":"2026-03-30"}]}
{"type":"discussion","id":"DSC-0012","status":"done","ticket":"studio-editor-document-vfs-boundary","title":"Definir um boundary de VFS documental para tree/view/open files no Code Editor do Studio","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","vfs","filesystem","boundary"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0027","file":"discussion/lessons/DSC-0012-studio-editor-document-vfs-boundary/LSN-0027-project-document-vfs-and-session-owned-editor-boundary.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]} {"type":"discussion","id":"DSC-0012","status":"done","ticket":"studio-editor-document-vfs-boundary","title":"Definir um boundary de VFS documental para tree/view/open files no Code Editor do Studio","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","vfs","filesystem","boundary"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0027","file":"discussion/lessons/DSC-0012-studio-editor-document-vfs-boundary/LSN-0027-project-document-vfs-and-session-owned-editor-boundary.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
{"type":"discussion","id":"DSC-0013","status":"open","ticket":"studio-editor-write-wave-supported-non-frontend-files","title":"Definir a wave inicial de edicao no Code Editor apenas para arquivos aceitos e nao relacionados ao FE","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","write","read-only","vfs","frontend-boundary"],"agendas":[{"id":"AGD-0013","file":"AGD-0013-studio-editor-write-wave-supported-non-frontend-files.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"},{"id":"AGD-0014","file":"AGD-0014-studio-editor-frontend-edit-rights.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"}],"decisions":[{"id":"DEC-0010","file":"DEC-0010-studio-controlled-non-frontend-editor-write-wave.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0013"},{"id":"DEC-0011","file":"DEC-0011-studio-frontend-read-only-minimum-lsp-phase.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0014"}],"plans":[{"id":"PLN-0019","file":"PLN-0019-propagate-dec-0010-into-studio-and-vfs-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0020","file":"PLN-0020-build-dec-0010-vfs-access-policy-and-save-core.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0021","file":"PLN-0021-integrate-dec-0010-editor-write-ui-and-workflow.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0022","file":"PLN-0022-propagate-dec-0011-into-studio-vfs-and-lsp-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0023","file":"PLN-0023-scaffold-flat-packed-prometeu-lsp-api-and-session-seams.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0024","file":"PLN-0024-implement-read-only-fe-diagnostics-symbols-and-definition.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0025","file":"PLN-0025-implement-fe-semantic-highlight-consumption.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]}],"lessons":[]} {"type":"discussion","id":"DSC-0013","status":"open","ticket":"studio-editor-write-wave-supported-non-frontend-files","title":"Definir a wave inicial de edicao no Code Editor apenas para arquivos aceitos e nao relacionados ao FE","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","write","read-only","vfs","frontend-boundary"],"agendas":[{"id":"AGD-0013","file":"AGD-0013-studio-editor-write-wave-supported-non-frontend-files.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"},{"id":"AGD-0014","file":"AGD-0014-studio-editor-frontend-edit-rights.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"}],"decisions":[{"id":"DEC-0010","file":"DEC-0010-studio-controlled-non-frontend-editor-write-wave.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0013"},{"id":"DEC-0011","file":"DEC-0011-studio-frontend-read-only-minimum-lsp-phase.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0014"}],"plans":[{"id":"PLN-0019","file":"PLN-0019-propagate-dec-0010-into-studio-and-vfs-specs.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0020","file":"PLN-0020-build-dec-0010-vfs-access-policy-and-save-core.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0021","file":"PLN-0021-integrate-dec-0010-editor-write-ui-and-workflow.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0022","file":"PLN-0022-propagate-dec-0011-into-studio-vfs-and-lsp-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0023","file":"PLN-0023-scaffold-flat-packed-prometeu-lsp-api-and-session-seams.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0024","file":"PLN-0024-implement-read-only-fe-diagnostics-symbols-and-definition.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0025","file":"PLN-0025-implement-fe-semantic-highlight-consumption.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]}],"lessons":[]}

View File

@ -2,9 +2,9 @@
id: PLN-0019 id: PLN-0019
ticket: studio-editor-write-wave-supported-non-frontend-files ticket: studio-editor-write-wave-supported-non-frontend-files
title: Propagate DEC-0010 into Studio editor and VFS specs title: Propagate DEC-0010 into Studio editor and VFS specs
status: review status: done
created: 2026-03-31 created: 2026-03-31
completed: completed: 2026-03-31
tags: [studio, editor, vfs, specs, write-wave] tags: [studio, editor, vfs, specs, write-wave]
--- ---

View File

@ -70,7 +70,7 @@ Baseline workspace architecture rules are:
The shell must not encourage a workspace model where every interaction falls back to whole-workspace refresh. The shell must not encourage a workspace model where every interaction falls back to whole-workspace refresh.
Detailed local workspace composition remains workspace-owned. Detailed local workspace composition remains workspace-owned.
For example, `Code Editor`-local layout, navigator behavior, tab rules, passive placeholder surfaces, and read-only file behavior are not shell-global rules and must be defined by the workspace-local editor specification. For example, `Code Editor`-local layout, navigator behavior, tab rules, passive placeholder surfaces, document access-mode behavior, and editor-local save surfaces are not shell-global rules and must be defined by the workspace-local editor specification.
Project-session boundaries may still exist above a workspace when the state must remain alive while the project window stays open. Project-session boundaries may still exist above a workspace when the state must remain alive while the project window stays open.

View File

@ -8,7 +8,7 @@ Active
- `prometeu-studio` - `prometeu-studio`
- the Studio `Code Editor` workspace - the Studio `Code Editor` workspace
- the first read-only editor workspace wave - the first controlled editor write wave for supported non-frontend documents
## Purpose ## Purpose
@ -18,10 +18,11 @@ This specification stabilizes:
- the baseline visual composition of the workspace, - the baseline visual composition of the workspace,
- the `Project Navigator` role and scope, - the `Project Navigator` role and scope,
- the read-only file-opening model, - the mixed editable and hard `read-only` file-opening model,
- the responsive tab baseline, - the responsive tab baseline,
- the passive `Outline`, helper, and status-bar surfaces, - the passive `Outline`, helper, and status-bar surfaces,
- and the explicit deferral of write and semantic/LSP behavior. - the editor-local save surfaces,
- and the explicit deferral of semantic/LSP behavior.
## Authority and Precedence ## Authority and Precedence
@ -39,14 +40,16 @@ If this document conflicts with the global Studio shell specifications, the shel
The `Code Editor` workspace must assume: The `Code Editor` workspace must assume:
- the Studio shell already mounts `Code Editor` as a baseline workspace, - the Studio shell already mounts `Code Editor` as a baseline workspace,
- the current wave is read-only, - the current wave allows editing only for the supported non-frontend document classes classified by `prometeu-vfs` as editable,
- frontend-scoped supported documents remain hard `read-only`,
- all project files remain visible in the editor workspace even when only some are frontend-relevant, - all project files remain visible in the editor workspace even when only some are frontend-relevant,
- `prometeu.json` plus the selected frontend may identify source roots worth tagging, - `prometeu.json` plus the selected frontend may identify source roots worth tagging,
- future semantic providers such as LSP may arrive later, - future semantic providers such as LSP may arrive later,
- and the current wave must not depend on write/save or semantic behavior to remain coherent. - and the current wave must not depend on semantic behavior to remain coherent.
This workspace may consume Studio project metadata and Studio-owned workspace framework primitives, but it must not infer a semantic-provider contract beyond keeping the path open for later integration. This workspace may consume Studio project metadata and Studio-owned workspace framework primitives, but it must not infer a semantic-provider contract beyond keeping the path open for later integration.
This workspace must consume project tree and document data through `prometeu-vfs` rather than through editor-owned direct filesystem readers. This workspace must consume project tree and document data through `prometeu-vfs` rather than through editor-owned direct filesystem readers.
This workspace must consume document access policy and save capability from `prometeu-vfs` rather than rederiving editability locally.
## Workspace Model ## Workspace Model
@ -54,7 +57,7 @@ The `Code Editor` workspace is:
- project-aware, - project-aware,
- file-oriented, - file-oriented,
- read-only in this first wave, - mixed-mode in this wave, with editable supported non-frontend documents and hard `read-only` frontend documents,
- and explicitly not a semantic IDE surface yet. - and explicitly not a semantic IDE surface yet.
The workspace must help the user: The workspace must help the user:
@ -62,13 +65,12 @@ The workspace must help the user:
- see the full project tree, - see the full project tree,
- identify frontend-relevant source roots visually, - identify frontend-relevant source roots visually,
- open supported files into editor tabs, - open supported files into editor tabs,
- save editable non-frontend documents through editor-local commands,
- understand the active file context, - understand the active file context,
- and understand that semantic/editor-automation features are not part of this wave. - and understand that semantic/editor-automation features are not part of this wave.
The workspace must not pretend to offer: The workspace must not pretend to offer:
- save/write behavior,
- dirty state,
- merge behavior, - merge behavior,
- active outline semantics, - active outline semantics,
- or LSP-backed coding assistance. - or LSP-backed coding assistance.
@ -89,8 +91,9 @@ The left editor column must be a vertical stack containing:
The central editor work area must contain: The central editor work area must contain:
- a top command bar containing at least `Save` and `Save All`,
- a tab strip at the top, - a tab strip at the top,
- and the read-only editor body below it. - and the editor body below it.
The lower helper region is present in this wave only as a passive placeholder. The lower helper region is present in this wave only as a passive placeholder.
@ -153,6 +156,7 @@ Rules:
- Selecting a supported file that is not already open must open it in a new tab. - Selecting a supported file that is not already open must open it in a new tab.
- File opening must resolve document content through `prometeu-vfs`. - File opening must resolve document content through `prometeu-vfs`.
- The editor must maintain opened-file content in memory for the active Studio session only. - The editor must maintain opened-file content in memory for the active Studio session only.
- Frontend-scoped supported documents may coexist in tabs with editable non-frontend documents.
- The tab strip must be responsive rather than fixed to one hardcoded tab count. - The tab strip must be responsive rather than fixed to one hardcoded tab count.
- Overflow tabs must remain accessible through an IntelliJ-style overflow control. - Overflow tabs must remain accessible through an IntelliJ-style overflow control.
- The active tab must remain visible. - The active tab must remain visible.
@ -166,16 +170,21 @@ The first wave must not define:
- split editors, - split editors,
- or cross-session tab restoration. - or cross-session tab restoration.
## Read-only File Model ## Access-Mode and Save Model
The first `Code Editor` wave is read-only. The first `Code Editor` write wave is controlled rather than universally editable.
Rules: Rules:
- supported files may be opened into read-only in-memory buffers, - the workspace must treat `prometeu-vfs` as the canonical source of document access mode for supported files;
- the workspace must not write files, - the workspace must not infer frontend scope from path heuristics, local UI state, or ad hoc extension checks;
- the workspace must not expose save behavior, - supported frontend-scoped documents must remain hard `read-only`;
- the workspace must not define dirty tracking, - editable scope is limited to the supported non-frontend textual classes exposed by `prometeu-vfs` for this wave;
- the workspace must not allow local editorial mutation for hard `read-only` frontend documents;
- the workspace must expose save behavior only through an editor-local command bar containing at least `Save` and `Save All`;
- the global shell `Save` menu item must not be the save surface for this wave;
- save intent must route through `prometeu-vfs`, which remains the owner of persistence policy;
- a frontend hard `read-only` tab must show a top warning that the file cannot be edited or saved in this wave;
- and the workspace must not define local merge/conflict behavior against disk changes. - and the workspace must not define local merge/conflict behavior against disk changes.
## Outline Rules ## Outline Rules
@ -194,7 +203,7 @@ Rules:
## Status Bar Rules ## Status Bar Rules
The status bar must remain passive in this wave. The status bar must remain mostly passive in this wave.
Its left side must show the breadcrumb path of the active file, such as `proj > src > file.pbs`. Its left side must show the breadcrumb path of the active file, such as `proj > src > file.pbs`.
@ -204,12 +213,14 @@ Its right side must show:
- line separator, - line separator,
- tabs/spaces mode, - tabs/spaces mode,
- file extension or language, - file extension or language,
- and a read-only lock icon. - and access-mode state.
For this wave: For this wave:
- `L:C` may remain a visual placeholder, - `L:C` may remain a visual placeholder,
- and the read-only lock icon is visual only and does not imply file-permission enforcement. - editable non-frontend documents may show their current file-type state without implying build participation,
- hard `read-only` frontend documents must show an explicit `read-only` state,
- and the status-bar `read-only` surface should be shaped so it can evolve into a per-file toggle later without requiring a model rewrite.
## Session State Rules ## Session State Rules
@ -227,14 +238,17 @@ The following remain outside editor-owned session state:
- project-session ownership of `prometeu-vfs`, - project-session ownership of `prometeu-vfs`,
- structural project-tree data returned by `prometeu-vfs`, - structural project-tree data returned by `prometeu-vfs`,
- support classification rules, - support classification rules,
- and document loading responsibilities. - document loading responsibilities,
- save persistence policy,
- and build-facing document ownership.
Editable documents may have session-local editorial snapshots while the project session remains open.
Those snapshots are editorial only and must not be treated as canonical build input by implication.
Persisting that state across Studio executions is deferred. Persisting that state across Studio executions is deferred.
## Non-Goals ## Non-Goals
- write/save behavior
- dirty tracking
- merge/conflict resolution - merge/conflict resolution
- watcher-driven automatic refresh - watcher-driven automatic refresh
- public `prometeu-vfs` event APIs - public `prometeu-vfs` event APIs
@ -244,12 +258,16 @@ Persisting that state across Studio executions is deferred.
- LSP integration details - LSP integration details
- autocomplete, go-to-definition, symbols, rename, code actions, or semantic diagnostics while typing - autocomplete, go-to-definition, symbols, rename, code actions, or semantic diagnostics while typing
- a normative editor event contract in this wave - a normative editor event contract in this wave
- frontend editing
- any implication that editor-owned in-memory snapshots participate in the build
## Exit Criteria ## Exit Criteria
This specification is complete enough when: This specification is complete enough when:
- the read-only first-wave scope is unambiguous, - the controlled write-wave scope is unambiguous,
- the `Project Navigator` and tab responsibilities are explicit, - the `Project Navigator` and tab responsibilities are explicit,
- editor-local `Save` and `Save All` are part of the normative workspace contract,
- hard frontend `read-only` behavior is explicit in both warning and status-bar surfaces,
- placeholder versus functional regions are clearly separated, - placeholder versus functional regions are clearly separated,
- and deferred write/semantic/LSP behavior is clearly outside the first-wave contract. - and deferred semantic/LSP behavior is clearly outside the current contract.

View File

@ -8,7 +8,7 @@ Active
- `prometeu-vfs` - `prometeu-vfs`
- `prometeu-studio` - `prometeu-studio`
- the Studio project-document boundary for the first Code Editor migration wave - the Studio project-document boundary for the first controlled Code Editor write wave
## Purpose ## Purpose
@ -20,6 +20,8 @@ This specification stabilizes:
- project-session ownership, - project-session ownership,
- the filesystem-backed first-wave contract, - the filesystem-backed first-wave contract,
- structural tree and document access responsibilities, - structural tree and document access responsibilities,
- canonical frontend scope and access policy ownership,
- editorial snapshot and save ownership for editable non-frontend documents,
- the RPC-first public API baseline, - the RPC-first public API baseline,
- and explicit first-wave exclusions such as public event publication and watchers. - and explicit first-wave exclusions such as public event publication and watchers.
@ -47,7 +49,7 @@ If this document conflicts with shell-wide Studio rules, the shell specification
- watcher-driven refresh in this wave, - watcher-driven refresh in this wave,
- public event API exposure in this wave, - public event API exposure in this wave,
- write or save semantics, - build participation for editorial snapshots by implication,
- or ownership over non-Studio domains such as packer assets. - or ownership over non-Studio domains such as packer assets.
## Module Role ## Module Role
@ -58,6 +60,8 @@ If this document conflicts with shell-wide Studio rules, the shell specification
- the owner of project structural tree data for the covered scope, - the owner of project structural tree data for the covered scope,
- the owner of project document resolution for the covered scope, - the owner of project document resolution for the covered scope,
- the owner of file support and unsupported-file classification for the covered scope, - the owner of file support and unsupported-file classification for the covered scope,
- the owner of document access policy for the covered scope,
- the owner of save persistence for editable documents in this wave,
- and the required path through which Studio accesses project-document filesystem state in this wave. - and the required path through which Studio accesses project-document filesystem state in this wave.
`prometeu-vfs` is not: `prometeu-vfs` is not:
@ -119,8 +123,36 @@ Rules:
- opening a supported file in the Code Editor must go through `prometeu-vfs`; - opening a supported file in the Code Editor must go through `prometeu-vfs`;
- the returned document content must describe only project-session document state for the opened project; - the returned document content must describe only project-session document state for the opened project;
- this wave must not add save, dirty tracking, merge, or conflict semantics by implication; - `prometeu-vfs` must classify each supported document as at least editable or hard `read-only`;
- future in-memory overlays may be added only by later explicit decision. - unsupported documents must remain distinguishable from supported `read-only` and supported editable documents;
- `prometeu-vfs` must own editable in-memory editorial snapshots for the current Studio session;
- save operations for editable documents in this wave must persist those editorial snapshots to disk through `prometeu-vfs`;
- Studio consumers must treat `prometeu-vfs` access policy as canonical rather than rederiving editability locally;
- and editorial snapshots must remain outside build-facing document state.
## Frontend Scope Contract
Frontend scope must be decided canonically inside `prometeu-vfs`.
Rules:
- `FrontendSpec.allowedExtensions` is the source of truth for frontend scope in this wave;
- the VFS document contract must expose a canonical frontend-compatible `typeId` or equivalent scope marker derived from that source of truth;
- consumers must not infer frontend scope from raw dynamic language identifiers, path heuristics, or local UI extension checks;
- frontend-scoped supported documents must remain hard `read-only` in this wave;
- the initial editable non-frontend set is limited to the currently supported textual classes represented as `text`, `json`, `ndjson`, and `bash`;
- and no additional editable class may be inferred by implementation convenience during this wave.
## Document Access Context
`prometeu-vfs` must reserve a single access-context entity for document-access-related values.
Rules:
- the access-context entity may remain session-local in this wave;
- it must already support lookup and mutation under current demand;
- future persistence may be added later without redesigning the access model;
- and the current reservation must not be treated as authorization for build participation or broader product-wide state ownership.
## Support and Plugin Rules ## Support and Plugin Rules
@ -169,11 +201,12 @@ Rules:
- public event publication - public event publication
- watcher-driven refresh - watcher-driven refresh
- write or save behavior
- dirty tracking - dirty tracking
- merge or conflict handling - merge or conflict handling
- non-project content snapshots - non-project content snapshots
- a generic product-wide filesystem abstraction - a generic product-wide filesystem abstraction
- frontend editing
- treating editorial snapshots as canonical build input
## Exit Criteria ## Exit Criteria
@ -182,5 +215,7 @@ This specification is complete enough when:
- `prometeu-vfs` ownership is clearly separated from shell and workspace UI ownership, - `prometeu-vfs` ownership is clearly separated from shell and workspace UI ownership,
- the project-session lifecycle rule is unambiguous, - the project-session lifecycle rule is unambiguous,
- the structural tree contract is explicitly non-visual, - the structural tree contract is explicitly non-visual,
- frontend scope and access policy ownership are explicit,
- editable non-frontend snapshot and save ownership are explicit,
- the RPC-first public API rule is explicit, - the RPC-first public API rule is explicit,
- and deferred public events and watchers are clearly out of scope. - and deferred public events and watchers are clearly out of scope.

View File

@ -41,7 +41,7 @@ Specs should normally be fed by:
1. agendas that frame the open Studio topic, 1. agendas that frame the open Studio topic,
2. decisions that close the product or interaction choice, 2. decisions that close the product or interaction choice,
3. pull-request plans that define propagation, 3. plans that define propagation,
4. then spec integration. 4. then spec integration.
If a spec edit would require guessing unresolved UI behavior, stop and surface the missing decision first. If a spec edit would require guessing unresolved UI behavior, stop and surface the missing decision first.
@ -64,6 +64,17 @@ Recommended order:
1. shell and workspace layout; 1. shell and workspace layout;
2. shared UI foundations; 2. shared UI foundations;
3. components module policy; 3. components module policy;
4. project document VFS boundary; 4. assets workspace behavior;
5. assets workspace behavior; 5. project document VFS boundary;
6. code editor workspace behavior. 6. code editor workspace behavior.
## Current Wave Notes
The current `Code Editor` wave is not globally read-only anymore.
Normative reminders:
- editable scope is limited to supported non-frontend textual documents classified by `prometeu-vfs`;
- frontend-scoped supported documents remain hard `read-only`;
- the editor-local `Save` and `Save All` surfaces belong to the `Code Editor` workspace rather than the shell;
- editorial in-memory snapshots remain outside build-facing state.