Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.1.9] - 2026-07-21

### Fixed

- Narrowed README evidence and outcome wording to the recorded co-change mechanism, without implying a documented production incident or a guaranteed Codex revision.
- Clarified local extension rendering and saved receipts versus explicit provider-backed advisory review across the root README, extension metadata, extension README, and Getting Started walkthrough.

## [0.1.8] - 2026-07-21

### Fixed
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
| | |
| --- | --- |
| Task | Update the checkout route |
| Recorded evidence | The route and its webhook partner share a co-change history — an incident and a revert, not an import |
| Recorded evidence | The route and its webhook partner share a repeated co-change history, including a rounding change and its later revert—not an import. |
| An incomplete patch | The hook denies it, citing the specific evidence and the omitted partner |
| Outcome | Codex revises the changeset before the edit lands |
| Outcome | The incomplete patch does not land; Codex receives the evidence and must account for the recorded partner before retrying. |

## Installation

Expand Down Expand Up @@ -85,7 +85,7 @@ Let the installer handle the `code` CLI, idempotency, and the reload prompt for
npx @workspacejson/codex-mcp install --with-extension
```

This installs the `workspace-json.workspacejson-codex-decorations` extension: Explorer decorations on fragile files, a **current-change** view, a synchronized status item, and receipt-backed advisory review — all read from your local `.agents/workspace.json`, with no network calls and no telemetry.
This installs the `workspace-json.workspacejson-codex-decorations` extension: Explorer decorations on fragile files, a **current-change** view, a synchronized status item, and saved review receipts. The decorations, current-change view, status item, and saved review receipts read local workspace data with no telemetry. Running a new advisory review is a separate explicit action that sends only the supplied diff to the configured provider.

The installer targets **VS Code Stable** only. If the `code` CLI isn't on your PATH it reports `UNAVAILABLE` with a one-line fix and leaves your MCP/hook install untouched — it never silently targets Insiders, Cursor, a remote, or a container. To aim it at a different editor's CLI deliberately, set `WORKSPACEJSON_CODE_CLI` (e.g. `cursor`) and rerun.

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Remediation Checklist — proposed only

No item below is authorized by this audit. Pause at every checkpoint.

1. Preserve volatile Git evidence.
- Evidence: 12 prunable/missing worktrees (including two detached), and numerous unreachable commits from `git fsck --no-reflogs --unreachable`.
- Later tools: `git fsck --no-reflogs --unreachable`, `git bundle create`, `git format-patch`, `git status --short` in each accessible worktree.
- Expected result: a named preservation artifact and clean/dirty inventory without altering refs.
- Checkpoint: human verifies every unreachable commit selected for preservation and that no secrets are copied into a shared location.
- Rollback: preservation actions are additive; retain originals.
- Linear: comment HAC-136/HAC-206 only if a relevant preserved commit changes their assessment.
- Cleanup unlocked: none; this is a prerequisite.

2. Reconcile the release baseline.
- Evidence: `release/0.1.9@940760d` is one ahead/one behind `origin/main`; main has `7d42a61 release: 0.1.9 (#13)`.
- Later tools: `git range-diff origin/main...release/0.1.9`, `git diff --stat`, `git patch-id`.
- Expected result: an explicit equivalent/superseded/divergent decision with files affected.
- Checkpoint: human selects whether release-only differences matter.
- Rollback: no mutation occurred; retain both refs.
- Linear: update/reframe HAC-206 after the decision.
- Cleanup unlocked: release branch only if equivalence and remote retention are proven.

3. Review the security/config remediation as a bounded patch set.
- Evidence: `fix/adversarial-review-hac99-hac101` has 4 unique commits, including `.codex/config.toml`, hook and structured-output changes.
- Later tools: `git range-diff`, targeted tests, `npm run check`, exact-config server/no-write regression test.
- Expected result: explicit current-main compatibility and security review.
- Checkpoint: human approves any conflict resolution; do not silently select a policy outcome.
- Rollback: use a temporary reconciliation PR; close it if gates fail.
- Linear: HAC-99/HAC-101/HAC-129 only after validation evidence.
- Cleanup unlocked: none until PR is merged and patches are equivalent.

4. Decide the HAC-136/176/177/178 old patch family.
- Evidence: three branches share `0041bdf`; Linear HAC-206 calls them stale/regressing, but the patch changes 20 files including fixture and extension code.
- Later tools: compare `d5fe7a0..0041bdf` to `main`, inspect fixture contract, execute extension and MCP tests.
- Expected result: preserve, selectively reconstruct, or formally supersede decision.
- Checkpoint: architecture owner approves any reconstructed fixture/extension behavior.
- Rollback: branch from current main; abandon only the new reconciliation PR, never the original evidence.
- Linear: HAC-136 comment/status only after demonstrated GPT-5.6/reviewer criteria.
- Cleanup unlocked: family aliases only after all unique commits are preserved/integrated/superseded with evidence.

5. Refresh marketplace/onboarding work through a new PR.
- Evidence: `polish/extension-marketplace-metadata@b9ec0d9` has ten unique commits; HAC-206 explicitly called for a curated merge but targets obsolete 0.1.6.
- Later tools: create a fresh branch from `main`, selectively reconstruct `4380d63..b9ec0d9`, `npm ci`, `npm run check`, `npm run prepublishOnly` where release-scoped.
- Expected result: a reviewable PR with current version/installer semantics.
- Checkpoint: verify packaged artifact and Node 20/22 CI results; inspect resulting release version.
- Rollback: close PR; no canonical-branch mutation.
- Linear: post the HAC-206 paste-ready comment and link the PR.
- Cleanup unlocked: source branch only after PR merge plus patch-equivalence proof.

6. Reconcile Linear, then plan cleanup.
- Evidence: HAC-136 is In Progress despite stale branches; HAC-206 is a Backlog 0.1.6 inventory while repository is 0.1.9.
- Later tools: Linear issue/comment reads and authorized updates; `git branch --merged origin/main`; `git worktree list --porcelain`; `git cherry`.
- Expected result: every issue’s status reflects verified implementation, not code presence.
- Checkpoint: human reviews every deletion candidate’s unique-commit, clean-status, PR, backup, and Linear evidence.
- Rollback: do not delete; preservation branches/bundles remain.
- Linear: apply only approved status/comment changes.
- Cleanup unlocked: only individually proven worktrees/branches; never a broad prune or garbage collection.
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Reconciliation Execution Results — 2026-07-22

## Phase 0 — Drift Check and Preservation

Audit identifier: `worktree-reconciliation/2026-07-22`.

| Check | Command / connector | Result | Classification |
| --- | --- | --- | --- |
| Canonical remote ref | `git log -1 origin/main` | `7d42a61 release: 0.1.9 (#13)` | `SAFE_DRIFT` — unchanged from audit evidence |
| Local main ref | `git log -1 main` | `c14ef4e`; five commits behind cached `origin/main` | `SAFE_DRIFT` — already recorded in audit |
| Worktrees | `git worktree list --porcelain` | 15 registered; 12 prunable/missing; detached scratch remains `e0827a8` | `SAFE_DRIFT` — corrected audit count preserved in artifacts |
| Local branches | `git for-each-ref refs/heads` | 30 local branches | `SAFE_DRIFT` — unchanged |
| Root state | `git status --short --branch`, `git stash list` | audit artifacts were untracked; no stashes | `SAFE_DRIFT` — audit package is unique uncommitted work |
| GitHub / PR / CI / protection | `git remote show origin` | DNS resolution failed for `github.com` | `BLOCKING_DRIFT` — cannot refresh required PR/check/protection evidence |
| Linear HAC-136 | Linear `get_issue` | In Progress; acceptance still requires real product-path reviewer, visible artifact, demo, and docs | `SAFE_DRIFT` |
| Linear HAC-206 | Linear `get_issue` | Backlog; still a 0.1.6 merge inventory | `SAFE_DRIFT` |

`workspace_get_file_context` was unavailable in this session. Per `AGENTS.md`, that is recorded as unavailable and is not treated as a safety signal.

### Preservation action

- Created local branch `audit/reconciliation-2026-07-22` from `release/0.1.9@940760d`.
- This branch preserves the three audit artifacts and this execution log as one documentation-only audit record. No implementation, configuration, generated artifact, Git history rewrite, stash, worktree, branch deletion, or Linear mutation was performed.
- Backup/rollback reference: local branch `audit/reconciliation-2026-07-22`; rollback is a normal branch deletion only after the documentation is merged or otherwise archived.

## Phase 1 — Approved Merge Waves

No wave was executed.

| Planned item | Source / target | Action | Reason stopped | Remaining risk |
| --- | --- | --- | --- | --- |
| Wave 0 preservation of missing/prunable worktrees | 12 prunable registrations and unreachable objects | Inventory only | Existing worktree paths are absent; no destructive worktree operation permitted | Unreachable work remains at risk until separately bundled/archived |
| Wave 1 release baseline | `release/0.1.9@940760d` vs `origin/main@7d42a61` | Not started | Requires current PR/protection evidence and a human release-equivalence decision | Release delta remains unreconciled |
| Wave 2 security + HAC-136 patch families | `0821fac..8dea6cc`; `d5fe7a0..0041bdf` | Not started | Audit requires manual architectural decisions; GitHub status unavailable | Unique work remains preserved but unverified |
| Wave 3 marketplace refresh | `4380d63..b9ec0d9` to fresh PR from current main | Not started | Required PR workflow and checks cannot be verified while GitHub is unreachable | Marketplace/onboarding work remains unintegrated |
| Wave 4 validation / Linear | all affected issues | Not started | No integration occurred; completion criteria not revalidated | Linear intentionally unchanged |
| Wave 5 cleanup | branches/worktrees | Not started | Preconditions not met and external evidence unavailable | No deletion performed |

### Phase 0 re-check after GitHub connectivity was restored

The initial DNS block was transient. After re-authentication and `git fetch origin --prune --tags`, the following post-audit facts were established:

- **SAFE_DRIFT:** no open pull requests; `main` is unprotected (GitHub branch-protection endpoint returns HTTP 404).
- **SAFE_DRIFT:** PR [#9](https://github.com/workspace-json/codex-mcp/pull/9) merged `polish/extension-marketplace-metadata` at `40b73cb`; its merge diff exactly matches the branch's 15-file / 309-insertion / 15-deletion payload. Its Node 20 and Node 22 `build-and-smoke` checks succeeded.
- **SAFE_DRIFT:** PR [#13](https://github.com/workspace-json/codex-mcp/pull/13) merged `release/0.1.9` at `7d42a61`; its merge diff exactly matches `release/0.1.9@940760d`'s 8-file release payload. Its Node 20 and Node 22 `build-and-smoke` checks succeeded.
- **REQUIRES_REPLAN:** the audit's proposed marketplace-refresh wave is already integrated by PR #9 and must not be reimplemented.
- **REQUIRES_REPLAN:** PR [#1](https://github.com/workspace-json/codex-mcp/pull/1), the `fix/adversarial-review-hac99-hac101` security/config remediation, is closed unmerged. Its two CI checks succeeded, but four commits / 13 files remain unique to the local branch. The audit-required architecture decision remains unresolved; no cherry-pick was performed.
- **REQUIRES_REPLAN:** release branches `origin/release/0.1.7` and `origin/release/0.1.8` were deleted remotely. Their local branches and all missing/prunable worktree registrations remain preserved because their untracked state cannot be proven absent.

No Linear update is justified by this drift alone: the validated PR evidence confirms integration history but does not satisfy HAC-136's remaining product/demo/docs criteria or resolve HAC-206's stale scope.

## Validation Performed

| Scope | Command | Result |
| --- | --- | --- |
| Audit JSON | `node -e JSON.parse(...)` with branch/worktree counts | PASS: valid JSON; 30 branches and 15 worktrees enumerated |
| Audit formatting | `git diff --check -- docs/audits/worktree-reconciliation/2026-07-22` | PASS |
| Audit PR CI | GitHub Actions run `29957217674` for PR #14 at `f8e201a` | PASS: Node 20 and Node 22 `build-and-smoke` both completed successfully |
| Runtime/package validation | Not run | Not applicable: no runtime/package change; full integration validation remains blocked |
| Adversarial review | `codex exec review --uncommitted --ephemeral` | INCOMPLETE: reviewer inspected the artifacts but did not emit a final verdict; Linear OAuth refresh failed. A count discrepancy discovered during review was corrected before this log. |

## Pull Requests and Linear Updates

- Pull requests: no implementation PR was created or updated. Historical PR #9 and PR #13 are verified merged; PR #1 is verified closed-unmerged. Documentation-only PR [#14](https://github.com/workspace-json/codex-mcp/pull/14) was opened from `audit/reconciliation-2026-07-22` to `main` for this audit record.
- Linear: none created, edited, commented on, closed, reopened, or canceled. HAC-136 and HAC-206 were read only.

## Cleanup

None. No worktree, branch, stash, untracked file, commit, or remote ref was removed or rewritten.

## Final Repository State

- Canonical integration reference: `origin/main@7d42a61` (cached local tracking ref; remote freshness unavailable).
- Current branch: `audit/reconciliation-2026-07-22`, created from `release/0.1.9@940760d`.
- Remaining worktrees: 15 registered; 12 prunable/missing.
- Remaining branches with unique/unverified work: unchanged from the audit, including the `0041bdf` family, `fix/adversarial-review-hac99-hac101`, `polish/extension-marketplace-metadata`, and `release/0.1.9`.
- Remaining stashes: none observed in root worktree.
- Remaining uncommitted implementation: none introduced by this execution; audit documentation will be committed on the dedicated audit branch.
- Open reconciliation pull requests: documentation-only PR #14; no implementation reconciliation PR is open.
- Linear issues still requiring correction: HAC-136 and HAC-206; no updates are justified without verified integration.
- Validation status: audit-file integrity PASS; repository-wide integration validation NOT RUN because no integration was performed.
- Cleanup status: blocked; no cleanup is safe.

## Unresolved Items

1. Reclassify PR #9 marketplace work and PR #13 release work as historical integration, not pending merge candidates.
2. Obtain the human architecture decision for the closed-unmerged security/config remediation and HAC-136 fixture/extension patch families.
3. Preserve/bundle unreachable commits and inspect missing-worktree state before any prune, deletion, or garbage collection.
4. Review HAC-136 and HAC-206 against current acceptance criteria after the architecture decisions; then make only evidence-backed Linear changes.

## Attestation

- All approved unique work was preserved: **PARTIAL** — the audit artifacts are preserved on the dedicated audit branch; unreachable/missing-worktree work was not yet bundled because the audit requires an explicit per-object preservation review.
- All successful integrations were validated: **NOT APPLICABLE** — no integrations were performed.
- Linear was updated only after repository verification: **YES** — Linear was not modified.
- Every removed worktree and branch was proven redundant or intentionally archived: **YES** — none were removed.
- Any item remains whose safety is unknown: **YES** — 12 prunable/missing worktrees, unreachable commits, GitHub PR/check/protection state, and architecture decisions remain unresolved.
Loading
Loading