Also updated fixtures/ast.log. Understand the addenda file in connection with vue3js-app-proposal-for-sdk-claude/README.md and CLAUDE's findings in response.
5.5 KiB
Enumerated Considerations raised by CLAUDE
Forwarded CLAUDE findings, commented or answered by upstream author.
June 19th
-
Blueprint import: Fixed in neusician repo. Revalidate.
-
Hyphenation: Fixed in neusician repo.
-
MIME-type: It is your business. I follow "be strict in your affairs, be most permissive in others'" doctrine, except when there are conflicting security considerations. Worth a thought: Let's stay compatible with
text/yamltoo, because a score is also supposed to be human readable text, isn't? -
Not only the table (from earlier CLAUDE findings) was incomplete, but numerous places in sompyler's parsing process remained without the appropriate emissions to AST.log. These have been added (except some which need more bug investigation), some code needed restructuring.
Revalidate it in respect to compliance to:
- Deeper levels must come after next higher levels without any "overstumbles"
- Allowed object paths:
- SLOT for depth level 00 only
- PARENT.SLOT with PARENT being a TYPE or the SLOT of next-higher level
- SLOT.TYPE with SLOT of implied PARENT
-
Correct, they are railsback coordinates. Fixed overstumble.
-
Mentioned slots not in plan should be implemented so they are editable.
-
Envelope co-dependence: Yes, implement checks in v1.
-
If a linked instrument (its path contains slashes, i.e. is stored in a file at server side) is changed, it is dirty like an embedded one and the export triggers an update of NOT_CHANGED_SINCE to the current iso-formatted date. As it is linked and local files are immutable, it must therefore be embedded for the changes to take effect, indeed.
A modal dialog should be displayed: "Linked instrument {original path} has been changed. Embed it in the score? If not, changes will be discarded. If yes, all voices using the instrument will have their linkage to the instrument fixed by dropping the path part, leaving the basename. If there is already an instrument with that name, you will need to set the name."
If a linked instrument is not changed, it should be omitted in the exported score. Also drop embedded instruments that are no longer used by a voice, changed or not. Display a warning box that embedded instruments are no longer used, hence dropped, unless retained in a (mute) voice.
-
Do as you recommend.
-
Subchains: Implement it so it is editable, irrespective of its omission in the plan.
-
Implement export hooks for all objects unless you reckon that regarding specific object types the token use would be obscene. Insert placeholders for humans to fill in that case. Get along without YAML library. Follow my advice of implementation:
-
Every object-handler has an select_export_template() method returning a list of pairs each consisting of:
-
a list of object slots required to be set. Nested lists of slots are OR-linked. Maybe recursively nested by list of pairs, to be processed recursively. Check for and prohobit sublists mixing both types.
-
a template to fill and return when all the object slots are defined. The placeholders in the template (not a Javascript Template object) are #n format referring the list index
-
-
Check each pair if all listed slots have got a value, and any slot in nested lists. Proceed depth-first for nested template finders.
-
The first fullfillable template is formatted so that every newline is extended by the required number of indenting space, the first one reduced by two if prefixed by "- ", or rather the rest extended by two.
Handle templates without newline as inlinable (no block indentation). Composite should be in YAML flow-style if there is no appropriate STRING variant from the Neusik format spec, e.g. for stem-notes with chains.
-
Do not use inter-object references YAML provides.
This I would find a proper YAML writer that humans (at least me) would be happy to fiddle with, and may be convertible to other serialization formats besides YAML. But it is an opinion of the upstream author. If the user i.e. the maintainer of the score editor project wants a YAML.js dependency, they may have one, follow them.
-
-
Yes, proceed.
Some objections not asked for
I question the choice of project structure, given it is an idea of CLAUDE and not deliberately created by the user:
c0dev0id/sompAIler:
PLAN/
sompyler submodule
neusician/... # forked from neusician
...
I would like to suggest:
c0dev0id/sompAIler:
PLAN/
sompyler @49a803b # submodule
neusician @8c129644 # submodule
vue3js-app-proposal # submodule
__init__.py # defines blueprint = flask.Blueprint(...)
templates/...
static/...
In deployment, the local repo root-dir would then be linked again in neusician/score-editor to bring it in line with conditions explained in ./AGENTS.md therein. Looped symlinks could be dangerous, though, for find etc. Separate repositories might be preferable. Reconsider the project structure and have the user confirm the suggested changes.
The name chosen leave to his descretion but should be reconsidered, too. "Sompyler" not being a brand, I had rather he would not provoke confusion "A-I" vs "y" for an add-on to an interface vs the core thing.