Manifests Lack Output Field Schemas, Breaking Pipeline Autocomplete #4
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Programs explicitly declare their overarching output format (e.g.,
output = "record_list") in their manifests, but they do not formally declare the specific fields contained within those records. Consequently, they also cannot declare what structured data they accept fromstdin.For devs:
If a user types
list /home/user | where <TAB>, how does the shell know to autocomplete specific fields likesize,kind, ormodified?For the shell to provide context-aware autocomplete inside pipeline expressions (like the
expressiontype used by thewherecommand), it needs to know the exact schema of the records flowing through the pipe. While the terminal knowslistoutputs arecord_list, it does not know the actual data fields of that list at parse time unless the manifest formally defines them. Without an output field schema matching an input requirement, true type safety and context-aware completion between piped programs are impossible, deferring all type-checking to runtime.For users:
The pipeline is the primary interface in ZerOS. If users cannot tab-complete field names when piping
listintowhereorsort, the ergonomic advantage of passing structured data is severely diminished.Test Examples
list /home | where <TAB>(Should suggestname,size,kind,modified, etc.)process | sort <TAB>(Should suggestpid,cpu,memory, etc.)system | slice <TAB>(Should suggestos,version,kernel, etc.)