Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
a55c8dc
sdg(liaison): update PHILOSOPHY.md
claude Jul 31, 2026
e85f836
sdg(liaison): write SEED.md — foundational APIs for an external spec UI
claude Jul 31, 2026
2cd687e
sdg(phase-2): draft IP 0001-external-ui-apis (intent question pending)
claude Jul 31, 2026
df0171b
sdg(liaison): update PHILOSOPHY.md
claude Aug 3, 2026
85a9dd2
sdg(phase-2): finalize IP 0001 per Developer-confirmed scope; consume…
claude Aug 3, 2026
9b173b4
sdg(phase-3): apply review round 1 to IP 0001 — imperfect-workspace m…
claude Aug 3, 2026
3900780
sdg(phase-3): apply review round 2 to IP 0001 — occurrence spans, exi…
claude Aug 3, 2026
b590c53
sdg(phase-3): apply review round 3 to patch 0001 (external UI APIs)
claude Aug 3, 2026
5bd9c08
sdg(phase-3): apply review round 4 to IP 0001 — area/durable composit…
claude Aug 3, 2026
b913612
sdg(phase-3): one ownership rule for graph-area paths; scope occurren…
claude Aug 3, 2026
1c595e4
sdg(phase-3): pin code-range outputs; ground unattributed-path rule i…
claude Aug 3, 2026
3643efa
sdg(phase-3): apply iteration-7 review to patch 0001 (diagnostics car…
claude Aug 3, 2026
b24d2aa
sdg(phase-3): decide text-value and identity-uniqueness rules on impe…
claude Aug 3, 2026
9c86b59
sdg(phase-3): disambiguate attribute-view datum; seal stable-code del…
claude Aug 3, 2026
d6f8c6e
sdg(phase-3): pin invalid-form id-prop identity semantics (iter 10)
claude Aug 3, 2026
937e36d
sdg(phase-3): define unreadable-record outcome for preview delta; dro…
claude Aug 3, 2026
a724662
sdg(phase-3): apply optional clarifications O2/O3, accept patch 0001
claude Aug 3, 2026
6040942
sdg(phase-4): apply IP 0001 external-UI machine surfaces to SPEC.md (…
claude Aug 3, 2026
f5b312e
sdg(phase-4): define invalid-path behavior on UI surfaces; close refr…
claude Aug 3, 2026
f979178
sdg(phase-4): define machine-facing JSON forms (12.7); pin finding co…
claude Aug 3, 2026
71f18e0
sdg(phase-4): seal refused-preview form, unify build-validation gate,…
claude Aug 3, 2026
9cc71e8
sdg(phase-4): define .mdx-less derived map, import name datum, anchor…
claude Aug 3, 2026
32b5bd4
sdg(phase-4): pin preview reporting for created files, finding-order …
claude Aug 3, 2026
1df1cf6
sdg(phase-4): pin policy-violation finding form and invalid-workspace…
claude Aug 3, 2026
b2094c4
sdg(phase-4): pin old-ID existence datum, disjoint refusal scopes, de…
claude Aug 4, 2026
ccc02b8
sdg(phase-4): pin move target occupancy, origin kind, rename collisio…
claude Aug 4, 2026
e34bcdd
sdg(phase-4): pin check's graph-data staleness form, classify mixed m…
claude Aug 4, 2026
6a74e5b
sdg(phase-4): pin per-file staleness occupant judgment and absent-fil…
claude Aug 4, 2026
926ce74
sdg(phase-4): pin gated-read precedence and move-destination componen…
claude Aug 5, 2026
253e7e0
sdg(phase-4): close IP 0001 — write-path occupancy, spells-no-identit…
claude Aug 5, 2026
0fb8dca
sdg(phase-6): cover IP 0001 surfaces in TEST-SPEC (iter 1)
claude Aug 5, 2026
9efbd86
sdg(phase-6): close literal-\$, read-gate, occupant, and directory-cr…
claude Aug 5, 2026
638cfd0
sdg(phase-6): close move-refusal, gate-vs-corruption, presence, and M…
claude Aug 5, 2026
213b935
sdg(phase-6): positively assert 14.10's graph-data unit form at check…
claude Aug 5, 2026
b0984f3
sdg(phase-6): cover undefined-source occurrences and unknown code uni…
claude Aug 5, 2026
8a24dad
sdg(phase-6): correct P-5's section-move oracle; string-literal keys,…
claude Aug 6, 2026
2e236c7
sdg(phase-6): byte-assert the move's real import edits and conversion…
claude Aug 6, 2026
320f063
sdg(phase-6): align T14-4 with 11.2's non-attachment of 13/22; test 1…
claude Aug 6, 2026
bdab22a
sdg(phase-6): retire 6.5's unspellable destination refusals to exit-2…
claude Aug 6, 2026
d5e47a6
sdg(phase-6): assert @1 unknown; record the ignored-order dead pair a…
claude Aug 6, 2026
1eaeaf2
sdg(phase-7): add CONF-AVAIL datum-form violators; refresh CONF-VALID…
claude Aug 6, 2026
d4b4143
sdg(phase-7): pin CHATTYREADS line inertness; certify T11.3-4's restr…
claude Aug 6, 2026
327f67e
sdg(phase-7): pin read sweeps and pre-generation discovery observatio…
claude Aug 6, 2026
6daf3a0
sdg(phase-7): pin CONF-AVAIL command routing as staging constraint; e…
claude Aug 10, 2026
5d11f16
sdg(phase-7): CERTIFICATIONS.md converged; flip patch 0001 to Stage: …
claude Aug 10, 2026
8294929
sdg(phase-8): run CI on pushes to the patch branch — its conflicted P…
claude Aug 10, 2026
1c8747e
sdg(phase-9): plan 93 harness compliance tasks into FIX_PLAN.md
claude Aug 10, 2026
561c4b7
sdg(phase-9): decode findings literally per SPEC 12.7 with datum deco…
claude Aug 10, 2026
2ebe4b9
sdg(phase-9): assert the 12.7 error document on exit 2 with JSON in e…
claude Aug 10, 2026
88840e2
sdg(phase-9): re-pin the S-1 universe to 81 keys; renumber T6.6-1 to …
claude Aug 10, 2026
b568d85
sdg(phase-9): assert the present code-impact scope's source range; st…
claude Aug 10, 2026
fc91e6e
sdg(phase-9): restage the #-containing and non-UTF-8 move destination…
claude Aug 10, 2026
ba212a1
sdg(phase-9): mark FP-006 done — §§1–9 condition assertions already t…
claude Aug 10, 2026
a0db855
sdg(phase-9): assert stable refusal codes with their §14 concerns acr…
claude Aug 10, 2026
2fbe39d
sdg(phase-9): add T1.3-6's invalid-id-form arms and CONF-VALID's 14.1…
claude Aug 10, 2026
080ed86
sdg(phase-9): stage T3-1's grammar-boundary arm and give CONF-MD fenc…
claude Aug 11, 2026
a95a25c
sdg(phase-9): assert bare-identity edge endpoints across edges rows, …
claude Aug 11, 2026
5fe7e8c
sdg(phase-9): add T4.3-2's zero- and two-argument text(...) arity arm…
claude Aug 11, 2026
a53c343
sdg(phase-9): add T4.5-2's upstream cross-file impact arm (FP-014)
claude Aug 11, 2026
c810d67
sdg(phase-9): assert rename's applied-mapping report through a new H-…
claude Aug 11, 2026
4406923
sdg(phase-9): add T6.4-4's wrong-kind and parse-local old-ID-existenc…
claude Aug 11, 2026
c8f717f
sdg(phase-9): assert move's applied-mapping report in both forms (FP-…
claude Aug 11, 2026
6d83761
sdg(phase-9): add T6.5-4's destination-occupant, empty-id, and derive…
claude Aug 11, 2026
118b164
sdg(phase-9): add T6.5-5's wrong-kind, mixed-synopsis, and parse-loca…
claude Aug 11, 2026
dd90204
sdg(phase-9): add T7-2's string-literal group-name keys arm (FP-020)
claude Aug 11, 2026
60e608b
sdg(phase-9): add T7.5-5's literal-$ forms arms (FP-021)
claude Aug 11, 2026
500548c
sdg(phase-9): implement T1.7-2 — code-location ranges via occurrence …
claude Aug 11, 2026
4b4f562
sdg(phase-9): implement T5.7-1 — occurrence units and duplicates (FP-…
claude Aug 11, 2026
31a170e
sdg(phase-9): implement T5.7-2 — byte-precise occurrence spans per ki…
claude Aug 11, 2026
3976719
sdg(phase-9): implement T5.7-3 — occurrence record data and total ord…
claude Aug 11, 2026
17e2b7e
sdg(phase-9): implement T5.7-4 — no-occurrence constructs and exit-1 …
claude Aug 11, 2026
853df77
sdg(phase-9): implement T6.5-7 — operation-side rewrite bytes (FP-027)
claude Aug 11, 2026
6304869
sdg(phase-9): implement T6.6-2 — preview is inert and predictive (FP-…
claude Aug 11, 2026
12cf7b2
sdg(phase-9): implement T6.6-3 — preview refusal and scheduling equiv…
claude Aug 11, 2026
5512c3f
sdg(phase-9): implement T6.6-4 — preview report content, the ten 12.7…
claude Aug 11, 2026
b160ae1
sdg(phase-9): implement T6.6-5 — record-based derived-file delta (FP-…
claude Aug 11, 2026
a524885
sdg(phase-9): implement T6.6-6 — preview under a corrupt graph record…
claude Aug 11, 2026
7155de4
sdg(phase-9): implement T10.1-4 malformed-recorded-decompositions arm…
claude Aug 11, 2026
4ac3afa
sdg(phase-9): implement T10.4-2 non-scope presence-recording arms (FP…
claude Aug 11, 2026
58c9eee
sdg(phase-9): assert T10.7-7 payload source ranges for every present …
claude Aug 13, 2026
ebcf248
sdg(phase-9): add T11-6 wrong-kind, unknown-unit, and disambiguator a…
claude Aug 13, 2026
2eb5d3d
sdg(phase-9): extend the 12.0 command sweep with the new surfaces (FP…
claude Aug 13, 2026
797f29e
sdg(phase-9): add T12.0-9's new exit-partition representatives (FP-038)
claude Aug 13, 2026
5a7db48
sdg(phase-9): implement T12.0-10's own precedence arms (FP-039)
claude Aug 13, 2026
d3ab5fd
sdg(phase-9): extend T12.0-12's git-less sweep to the new surfaces (F…
claude Aug 13, 2026
c160785
sdg(phase-9): add T12.2-2 occupant-kind and graph-data unit-form arms…
claude Aug 13, 2026
f66579d
sdg(phase-9): pin T12.2-3's never-refreshes per state (FP-042)
claude Aug 13, 2026
c3e311a
sdg(phase-9): extend T12.5-1's dispatch sweep to the §11 surfaces (FP…
claude Aug 13, 2026
102abe4
sdg(phase-9): extend T13.3-1/-2 sweeps to the §11 surfaces; add the r…
claude Aug 13, 2026
f3f455a
sdg(phase-9): add T13.3-3's whole-gate arms and never-gated contrast …
claude Aug 13, 2026
7e2a9cf
sdg(phase-9): add T13.4-6's plain-file occupant and 14.22 cardinality…
claude Aug 13, 2026
6a77873
sdg(phase-9): add T13.5-1's seam-neutrality twin compare (FP-047)
claude Aug 13, 2026
5fa521b
sdg(phase-9): extend T14-4's reporter matrix to the new-surface rows …
claude Aug 13, 2026
917683e
sdg(phase-9): implement T10.1-5's gate-precedence-over-corruption pai…
claude Aug 13, 2026
46168b7
sdg(phase-9): implement T11.2-1's parse-local availability suite (FP-…
claude Aug 13, 2026
aacac62
sdg(phase-9): implement T11.2-2's spelled-identity/interpreted-data m…
claude Aug 13, 2026
960e5b3
sdg(phase-9): implement T11.2-3's invalid-paths suite (FP-052)
claude Aug 13, 2026
9699c23
sdg(phase-9): implement T11.2-4's resolution and expanded-text matrix…
claude Aug 13, 2026
d3d7518
sdg(phase-9): implement T11.2-5's domain/findings/exit discipline (FP…
claude Aug 13, 2026
50638f8
sdg(phase-9): implement T11.2-6's never-stale gate-findings-never-att…
claude Aug 14, 2026
8cfceb2
sdg(phase-9): implement T11.3-1's occurrences enumeration over shared…
claude Aug 14, 2026
55d6e9c
sdg(phase-9): implement T11.3-2's --file set restriction (FP-057)
claude Aug 14, 2026
af3eb4d
sdg(phase-9): implement T11.3-3's --to acceptance/malformed/selection…
claude Aug 14, 2026
d516812
sdg(phase-9): implement T11.3-4's definitive-emptiness contrast pair …
claude Aug 14, 2026
defe0d4
sdg(phase-9): implement T11.4-1's whole-domain views and positional t…
claude Aug 14, 2026
9c5a9bb
sdg(phase-9): implement T11.4-2's operands-vs-restriction matrix (FP-…
claude Aug 14, 2026
fb3bdeb
sdg(phase-9): implement T11.4-3's attribute matrix and per-node datum…
claude Aug 14, 2026
dde2e09
sdg(phase-9): implement T11.4-4's imports datum matrix (FP-063)
claude Aug 14, 2026
f964c21
sdg(phase-9): implement T11.4-5's --text expansion domain (FP-064)
claude Aug 14, 2026
d2fdd17
sdg(phase-9): implement T11.4-6's byte classification via the P-2 ora…
claude Aug 14, 2026
2b65f41
sdg(phase-9): implement T11.5-1's total at resolution and view deriva…
claude Aug 14, 2026
b06bbda
sdg(phase-9): implement T11.5-2's offset spelling and operand matrix …
claude Aug 14, 2026
2d79e1a
sdg(phase-9): implement T11.5-3's occurrence containment and imperfec…
claude Aug 14, 2026
5f9a14e
sdg(phase-9): implement T11.6-1's inventory anchoring with the E-6 Li…
claude Aug 14, 2026
2c81f28
sdg(phase-9): implement T11.6-2's resolved configuration/sources/deri…
claude Aug 14, 2026
e787702
sdg(phase-9): implement T11.6-3's record, area, durables, and orders …
claude Aug 14, 2026
69e0e41
sdg(phase-9): implement T11.6-4's no-parse/no-write/one-finding arms …
claude Aug 14, 2026
949c3c9
sdg(phase-9): implement T12.0-13's multi-# malformedness and whole-pa…
claude Aug 14, 2026
726d719
sdg(phase-9): implement T12.6-1/-2, the version command's surface and…
claude Aug 14, 2026
79edb59
sdg(phase-9): implement T12.7-1, the 12.7 value forms, and wire the m…
claude Aug 14, 2026
015e04a
sdg(phase-9): implement T12.7-2, the findings-array ordering and docu…
claude Aug 16, 2026
2a5bbfa
sdg(phase-9): implement T12.7-3, the exit-2 error document (FP-077)
claude Aug 16, 2026
3bced2e
sdg(phase-9): implement T13.4-8, writes create missing directories (F…
claude Aug 16, 2026
56dde0b
sdg(phase-9): implement T14-6, the stable-code sweep (FP-079)
claude Aug 16, 2026
6a8b3c8
sdg(phase-9): implement T14-7, the refusal-reason contract (FP-080)
claude Aug 16, 2026
aa68a6b
sdg(phase-9): implement T14-8, the location-cardinality contract (FP-…
claude Aug 17, 2026
377a057
sdg(phase-9): implement FP-082, the P-2 fence/code-span staging
claude Aug 17, 2026
8a403ee
sdg(phase-9): implement FP-083, the P-5 section-move category oracle
claude Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,16 @@ name: CI

on:
pull_request:
# GitHub creates no pull_request-event runs while a PR is unmergeable.
# PR #7 (patch 0001, branch claude/xspec-ui-apis-4df8fa, standing in for
# patch/external-ui-apis) is conflicted with main (specs/PHILOSOPHY.md), so
# its CI signal comes from push-event runs on the branch head instead —
# same workflow, same tree; checks attach to the head commit and surface on
# the PR. Drop that branch from this list once its PR is mergeable again or
# the patch completes. (Same channel sdg/initial-build used, kept for
# history.)
push:
branches: [main, sdg/initial-build]
branches: [main, sdg/initial-build, claude/xspec-ui-apis-4df8fa]
workflow_dispatch:

concurrency:
Expand Down
73 changes: 54 additions & 19 deletions specs/CERTIFICATIONS.md

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions specs/PHILOSOPHY.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,7 @@ IMPORTANT: This file may only be edited and interpreted by Liaison. Only Liaison
- Operational and infrastructure setup work is not a patch in Developer's eyes: "this is not intended to be a patch, its just a one off set up task" (2026-07-28, correcting the npm-publishing work after triage drafted a Bug Report patch for it). Work whose substance is release/deploy/distribution machinery with zero product-behavior change routes as one-off release/devops execution under DEVOPS.md — not through the patch pipeline — and any patch artifacts created by such a misclassification are retired, not refined. Reserve the patch taxonomy for changes to specified product behavior (IP) or to the harness's ability to catch defects (Bug Report).
- Developer prefers tokenless, workload-identity credentials over long-lived stored secrets for automation: asked "can we use OIDC?" (2026-07-28) immediately after receiving the NPM_TOKEN setup checklist, choosing npm Trusted Publishing over a stored automation token. General rule: when a platform offers an OIDC/trusted-publisher path for a credential the process manages, default to it — long-lived secrets are bootstrap-only fallbacks, and Developer checklists should not require creating or rotating a token that workload identity can replace.
- xspec's consumption targets include coding-agent cloud environments — Developer asked how best to distribute the CLI into Claude Code web sessions (2026-07-29). Distribution is npm-only: `@modularcloud/xspec` on the public registry is the sole artifact channel; `vX.Y.Z` tags are release records and GitHub Releases carry no distribution artifacts. Consumption guidance (Liaison recommendation accepted as working default, 2026-07-29): per-repo devDependency + `npx xspec` preferred (rides the environment's normal dependency install, lockfile-pinned); `npx -y @modularcloud/xspec` for ad-hoc use; global install only where a bare `xspec` on PATH is explicitly wanted, via the environment's session-setup mechanism. A dependency-free compiled binary distributed via GitHub Releases would be new work, warranted only if a no-Node target ever matters.
- The xspec product boundary stays headless (2026-07-31): Developer plans an interactive UI on top of xspec — editing specs, visualizing requirement dependencies, seeing the nested structure inline with the MDX, jumping between references — but the UI itself is expected to live outside the xspec product ("won't necessarily be a part of the xspec spec itself"). xspec's role is to expose the foundational, machine-consumable APIs such an interface needs. When scoping UI-adjacent work: programmatic/observability surfaces belong in the product spec; rendering, editing chrome, and interaction design belong outside it. Developer routed this as a patch and asked the process to recommend the concrete changes — an open-ended seed that requests recommendations is a valid seed; the 2026-07-09 near-complete-draft pattern is Developer's habit, not a requirement.
- UI-adjacent scope rulings, approved 2026-08-03 (single "That sounds great" to the grouped seven-surface proposal for the external-UI patch — the concise grouped-approval pattern again): (1) an external UI connects by invoking the `xspec` CLI per interaction; no persistent service, watch, or push surface without a fresh proposal (one would also touch GOALS' interface statement, an approval-gated edit); (2) the UI owns text editing — xspec supplies positions, structure, validation, and previews, and its only source-rewriting operations remain `rename`/`move`; structured content-mutation commands ("add dependency", "insert section") are deliberately absent; (3) xspec reads only saved files — unsaved-buffer diagnostics are at most a later addition. Treat these as standing defaults for future UI-adjacent scoping, not just this patch.
- modularcloud/cspec (the repo renamed 2026-07-27 to free the xspec name) contains Developer's earlier partial UI — the "cspec editor" — built on an outdated conception of xspec. Developer's standing filter (2026-08-03): it may be mined for individual good ideas ("see if there are any other good ideas that we should take from it") but is never authoritative and "we should not draw from this too much" — never import its architecture, data model, or naming; adopted ideas must stand on their own merits in current-xspec terms.
- Refinement loops that plateau are closed by valve ruling, not run to a spontaneous clean round (first applied 2026-07-10, TEST-SPEC.md at iteration 12 of the xspec initial build). Plateau markers: each fresh review yields only one or two genuine but ever-narrower findings, nothing is re-litigated or reversed, and the upstream documents are already converged. Closure shape: one final iteration whose Driver applies what is necessary and then HALTs, with escape hatches for blocking upstream problems or an indefensible late discovery; residual gaps are deliberately left to the downstream problems-file net, which finds them with implementation eyes when they actually matter. Basis: Developer's revealed preference for bounded forward progress over open-ended polishing (bare "continue" nudges, cost sensitivity shown by the 2026-07-09 credits outage, full delegation of process judgment).
223 changes: 182 additions & 41 deletions specs/SPEC.md

Large diffs are not rendered by default.

Loading
Loading