Skip to content

fix/feat: real DSH home, linear canonicalization, legacy Skill import - #159

Closed
titanwings wants to merge 3 commits into
pr/09-versions-and-person-skillfrom
pr/10-dsh-home-and-legacy-import
Closed

titanwings wants to merge 3 commits into
pr/09-versions-and-person-skillfrom
pr/10-dsh-home-and-legacy-import

Conversation

@titanwings

@titanwings titanwings commented Sep 11, 2026 •

Copy link
Copy Markdown
Owner

What

fix/feat: real DSH home, linear canonicalization, legacy Skill import

Commits

  • fix(dsh,runtime,engine): reach the real DSH home and stop hanging on long runs
  • feat(cli): import a legacy Skill store as Distilly material
  • fix(cli): never merge two legacy people, and keep import output machine-readable

Stack

Stacked on pr/09-versions-and-person-skill; the whole series ends at distilly-work (0bd924e).

Verification

Every feature carries an author report and an independent audit in the delivery evidence folder (host-verification/), including screenshots and the audit verdict that drove the fixes. Gates on the top of the stack: format, lint, docs, release check, and 1163 tests.

Real hosts

Codex, Claude Code 2.1.268, OpenClaw 2026.9.2, Hermes v0.19.0, and DSH 0.1.5-rc.1 were each exercised end to end (install, host-visible confirmation, exactly five MCP tools, person Skill install/remove, uninstall). Capacity fixtures are recorded for Codex 0.146.0, OpenClaw 2026.3.24, and Hermes v0.9.0; newer host versions run on the labelled conservative floor.

Evidence

Author reports and screenshots (delivery evidence folder host-verification/):

  • f14-dsh-host-integration-REPORT.md, f14-dsh-host-integration.png
  • f16-legacy-import-REPORT.md, f16-legacy-import.png, f18-import-integrity-REPORT.md, f18-import-integrity.png

Independent audit reports:

  • round15-legacy-import-VERIFY.md, round16-import-integrity-VERIFY.md

distilly agent added 3 commits September 11, 2026 07:47
…long runs

An independent audit of the previous splitter fix found three defects: a file
with a long run of spaces or tabs never returned (the canonicalization regular
expression backtracked over the run, in the splitter and in the engine's own
normalizer), a cut inside a space run silently dropped the spaces the engine
then stripped, and a whitespace run longer than a material failed the whole
ingest call with a bare canonicalization error.

Canonicalization is now one shared linear scan in the engine, the splitter cuts
around space runs instead of trimming them, and a run no legal part could hold is
refused per file so the raw evidence is kept with a printed warning. Harvest now
prints the parser warnings it used to swallow.

DSH installs were also unreachable: the CLI treated the user home as the DSH
home, mapped the host to the wrong plugin source, and rejected the profile DSH
itself composes. Installs now land in DSH_HOME, read plugins/dsh, and treat the
host's own composed cordis.yml as expected.
People who used the older Skill release keep each person as a folder of Markdown
beside a meta.json descriptor, usually nested one category below a skills root.
Nothing read that layout, so an upgrade meant starting over.

import reads a single person directory or a whole legacy skills tree, creates or
reuses one subject per person (using the descriptor name and keeping the slug as
an alias), and ingests every supported file as evidence, reusing the harvest
path so the same already-ingested record, batching, and per-file reporting apply.
The legacy directory is only read.
…ne-readable

An independent audit of the import command found that a shared meta.json.slug
silently merged a second person into the first subject, that --name discarded
the legacy slug alias, that --json interleaved human progress with the JSON, and
that an over-long legacy name failed with a raw boundary error.

A conflict is now only treated as the same person when the engine matched the
display name that was asked for; an alias match for a different name is refused
with the conflicting value named and nothing stored. Aliases survive --name, an
exact-name match says which directory it absorbed, --json prints JSON only, an
over-long name is reported with the byte limit, category directories no longer
swallow the people below them, and every skipped file is listed by name.
@titanwings

Copy link
Copy Markdown
Owner Author

Superseded: this stacked series is consolidated into the dot-skill-test line (same tree, kept on distilly-work). Closing without merging to avoid conflicts with the v2 rewrite.

@titanwings titanwings closed this Sep 12, 2026
@titanwings
titanwings deleted the pr/10-dsh-home-and-legacy-import branch September 12, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant