Commit Graph

48 Commits

Author SHA1 Message Date
Claude fa1ea054a9 fix(release): verify version preparation for PR target events
Carry the reviewed D11 consumer patch (source patch SHA-256
b886537c5f27b5020bfcb60d2771860b1559efb38032c223880afc12d7872c03,
base b2150bae) into the Circle candidate before its freeze: bind the
retained version-preparation record to event-specific run, PR and base
identities (pull_request_target executes the trusted master base while
the run head identifies the candidate), re-read attempt and artifact
identity, and keep exact attempt, artifact, merged head/base and
baseline checks. Producer workflow and record schema are unchanged, so
records written by the current master writer stay valid.

Also registers the contract surface and the lesson from that review.
Decision and evidence: context/changes/cli-circle-login/overnight-handoff.md D-N6.

Refs: #40

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 22:24:08 +02:00
Claude 7ea5904c24 docs(cli-circle-login): withdraw PR41-first, record the verified proof DAG
Refs: #40, #41

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:57:56 +02:00
Claude 0e1998d092 docs(cli-circle-login): log the budget-gate blocker and the PR41-first ordering
Refs: #40, #41

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:54:04 +02:00
Claude 56b87f6018 docs(cli-circle-login): overnight handoff log and refreshed integration heads
Refs: #40

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:52:34 +02:00
Claude f78416135a docs(cli-circle-login): record draft PR #40 and push channel in the CI handoff
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude c870144be0 docs(cli-circle-login): delegated triage of review findings, follow-ups and CI handoff
F1/F2 kept (Toolkit 8a6817d), F6–F8 fixed (Toolkit 38f77e8), F9a/b fixed
(CLI b6415c5), F10 recorded as plan addenda, F3/F4/F5/F9c deferred with
the pilot evidence each needs. Adds coordination-handoff.md for the hosted
Linux/Windows CI slot with p0-cli-release.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude e8b4e55b67 docs(cli-circle-login): implementation review report (impl_reviewed)
Review of Phases 2–6: NEEDS ATTENTION, 0 critical, 2 warnings, 8
observations, decisions pending for the operator. Both warnings fixed in
Toolkit 8a6817d (poll answers unknown codes from KV before touching a
Durable Object; runbook lists every log event). change.md stamped
impl_reviewed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude aebe65c6a3 chore(cli-circle-login): implementation checkpoint (epilogue)
Record the Phase 2-6 commits in both repos, the local gate results and
the rows that remain open pending operator actions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 578abe32f5 docs(cli-circle-login): record Phase 6 progress (p6)
Row 6.2 points at Toolkit 3a55f15dd9c7724ce09b69f66c2b00cb5970476b. Row 6.1
stays open: the Circle E2E passed locally on macOS (5 scenarios, twice)
but its criterion names the Linux and Windows private CI matrix, which
needs a branch push the operator has not authorized.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 69027cf531 docs(cli-circle-login): keep manual row 4.5 unchecked
Manual verification rows are the operator's; an over-broad edit had
flipped 4.5 by mistake.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude ffc011a750 docs(cli-circle-login): record Phase 4 and 5 progress (p5)
Rows 4.1-4.4 point at Toolkit 35d93a328dbdad2c13482132a32626597f6dfbe4;
row 5.4 at the regenerated-types commit.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 131de055f8 docs(cli-circle-login): record Phase 5 progress (p5)
Flip rows 5.1-5.3 to a677271; 5.4 stays open until the generated types
are regenerated from the Phase 4 candidate spec.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude a1db1fd7d0 docs(cli-circle-login): record Phase 3 progress (p3)
Flip Progress rows 3.1-3.3 to Toolkit commit
10e846cb22dfb09260ba65df23f756d0efd06240 and align the runbook trial
body with the proven rich_text_body.body wire shape.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 4753b579ad docs(cli-circle-login): pilot-prep runbook and current authorization wording
Add the operator runbook for SQLite DO proof, CIRCLE_MESSAGING_TOKEN
provisioning and the controlled W01-W03 DM trial; replace the
historical "not approved" wording in plan.md and change.md with the
current instruction while keeping earlier checkpoints.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 500b2e6a39 docs(cli-circle-login): record Phase 2 progress (p2)
Mark change as implementing and flip Progress rows 2.1-2.4 to the
Toolkit commit 52b6bebfb2fea9376daa1e1984d205022c28cc09 on
feat/cli-circle-login.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
Claude 4c2a7aac87 docs(cli-circle-login): frame, research, architecture review, decisions, plan and review
Circle message login for the CLI: planning package approved by the operator
on 2026-09-13 (plan.md sha256 84335575…, review verdict SOUND after triage).
No product code changes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 21:38:35 +02:00
przeprogramowani b2150bae85 fix(release): preserve exact commit evidence through squash and publication 2026-09-13 20:57:09 +02:00
przeprogramowani b0c789af70 feat: enable v4 course selection and protected first-week sync (#38)
* docs(10xdevs4-cli-access): record membership gates and bootstrap context (p1)

Add canonical access plan, accepted decisions and supporting context.
Record phase 1 verification, Toolkit revision and remaining evidence gaps.

* docs(10xdevs4-cli-access): record course access gates and scoped review (p2)

Update canonical Progress, change status, evidence and implementation review.
Record Toolkit revisions, inherited typecheck limitation and phase 3 prerequisites.

* docs(10xdevs4-cli-access): persist reviewed revisions and phase 3 boundary

Record final reviewed Toolkit and CLI context revisions.
Persist Progress attribution and unresolved W04/W05/W08 prerequisites.
Keep phases 3–6, phase 7 and Manual criteria open.

* docs(10xdevs4-cli-access): record squash-safe source prerequisite

Record PR #30, verified gates, permanent-pin lessons and the remaining merge dependency.
Keep phase 3 and all manual rollout criteria pending.

* docs(10xdevs4-cli-access): record source prerequisite review

Record independent review of PR #30 and verified CI evidence.
Keep the master pin and delivery phase completion pending.

* docs(10xdevs4-cli-access): distinguish candidate checks from final master pins

Record passing pre-merge v4 checks and defer workflow suspension.
Keep the final v3 maintenance pin dependent on the resulting master SHA.

* feat: prepare v4 course delivery and protected project sync

Capture the reviewed implementation and manual rehearsal for draft PR review. Master source prerequisites, full clean verification and coordinated Windows CI remain open; production rollout is separate.

* fix: keep paid CI evidence private and converge cumulative sync

* docs: record merged source prerequisite and passing clean gate

* fix: preserve generated API type line endings on Windows

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-13 09:24:16 +02:00
“mkczarkowski” 5c1f03d491 chore(bulk-sync-update): impl-review report + status impl_reviewed
Save the full implementation review (F1–F4, all resolved) and bump
change.md status to impl_reviewed.
2026-06-20 12:35:58 +02:00
“mkczarkowski” d2733fd2a3 chore(bulk-sync-update): close out plan (epilogue)
Final SHA write-back into Progress (phase 4 rows) + change.md → implemented.
2026-06-20 11:42:16 +02:00
“mkczarkowski” 26d70d513a docs(bulk-sync-update): document 10x sync (p4)
- README.md: 10x sync section (flags, report, remediation, exit codes, skills/prompts scope)
- CHANGELOG.md: Unreleased entry for sync + catalog contentHash + planBundle
- CLAUDE.md: sync & change-detection notes (cheap-skip digest, planBundle parity)
- plan.md: flip Progress rows 3.x SHA write-back + 4.1-4.3
2026-06-20 11:41:53 +02:00
“mkczarkowski” ec8a2a644d feat(bulk-sync-update): 10x sync command (p3)
- commands/sync.ts: new `10x sync` — enumerate, cheap-skip via catalog digest,
  fetch+apply, actionable report (per-resource remediation), worst-outcome exit
- index.ts: register sync command
- manifest.ts: LessonFilesEntry.catalogContentHash (digest-vs-digest skip), tolerant read
- writer.ts: applyBundle persists catalogContentHash (carried forward on plain get)
- tests/sync-command.test.ts: --all, default/--module, cheap-skip, changed, dry-run,
  conflict+remediation, --force, partial-failure exit 1, locked exclusion, digest round-trip
2026-06-20 11:37:51 +02:00
“mkczarkowski” ca4d0bf247 refactor(bulk-sync-update): planBundle() writer refactor + catalog contentHash type (p2)
- writer.ts: export pure planBundle() + WritePlan types; applyBundle now consumes
  it (shared computeFileAction/planRules) so classification and application can't drift
- api-content.ts: optional contentHash on LessonSummary (always-fetch fallback when absent)
- generated/api-types.ts: regenerated from local API — catalog lesson type carries contentHash
- tests/writer-plan.test.ts: planBundle/applyBundle parity (created/unchanged/clean/conflict)
2026-06-20 11:22:32 +02:00
“mkczarkowski” 061390acf8 chore(bulk-sync-update): record change context + phase 1 progress (p1)
Cross-repo change: the Phase 1 backend code landed in 10x-toolkit (52446dd).
This repo holds the change folder + plan; flips Progress rows 1.1-1.4.

- context/changes/bulk-sync-update/{change.md,plan.md,plan-brief.md,research.md}
2026-06-20 11:14:18 +02:00
“mkczarkowski” 197db6b527 chore(archive): close disable-course-rules
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” 2993481628 fix(disable-course-rules): address impl-review F1/F2
F1: updateToolConfig now throws when the merged config has no `tool`
instead of silently persisting an invalid object a later read rejects
wholesale (dropping lang/acknowledgedOrphans).

F2: add command-level course-rules tests — strip-after-apply with
surrounding-content preservation, the human [removed] rules render
line, and the positive --course-rules CAC parse guard.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” ecb9a58ebd chore(disable-course-rules): close out plan (epilogue)
Land trailing edits: phase 3 SHA write-back into Progress, all manual
verification rows checked (verified live against ~/code/10xCards), and
change.md status → implemented.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” 6fb6ed6890 feat(disable-course-rules): command wiring, resolution & output (p3)
- src/commands/get.ts: register --no-course-rules, add tri-state
  resolveCourseRulesFlag (argv peek), merge-safe persistence via
  updateToolConfig (folds --lang persist, skips under --dry-run),
  explicit --type rules override, output (counts.rules 0 + [removed] line)
- tests/get-command.test.ts: resolver unit + opt-out/override/persist/dry-run
  integration; runGet mirrors process.argv
- README.md, CLAUDE.md: document the flag, persistence & override precedence

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” 29ee156819 feat(disable-course-rules): writer opt-out & strip (p2)
- src/lib/writer.ts: add applyCourseRules?: boolean to ApplyOptions
  (default true); when false, skip writing the course block and strip an
  existing one via removeRulesBlockWithMarkers (rules.action "removed",
  honors dryRun)
- tests/writer.test.ts: opt-out strip / no-op / dry-run / default-idempotent

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” d8fab8c559 feat(disable-course-rules): config schema & merge-safe persistence (p1)
- src/lib/config.ts: add courseRules?: boolean to ToolConfig, drop
  non-boolean courseRules in readToolConfig, add merge-safe
  updateToolConfig(patch) (fixes latent lang/acknowledgedOrphans clobber)
- tests/config.test.ts: courseRules shape validation + updateToolConfig merge
- context/changes/disable-course-rules: change folder (change.md, plan.md, plan-brief.md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 09:30:43 +02:00
“mkczarkowski” 4d2db4bf9d chore(archive): close content-overwrite, cumulative-manifest, user-edit-protection, e2e
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 21:22:19 +02:00
“mkczarkowski” 796896ca26 chore(content-overwrite): track research change folder
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 21:18:04 +02:00
“mkczarkowski” 201d779bad chore(cumulative-manifest): close out plan + document cumulative manifest (epilogue)
Final SHA write-back into plan progress rows, change.md → implemented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 20:55:08 +02:00
“mkczarkowski” c37f96f5c3 feat(cumulative-manifest): cumulative writer logic + scoped removal (p2)
Rewrite computeRemovals() for lesson-scoped removal with protected set.
Update manifest building to merge lesson entries, rebuild union files,
and seed from v2/v3-without-lessons manifests. Update existing cleanup
and removal tests for cumulative semantics. Add 8 new behavior tests
covering multi-lesson accumulation, protected-set, upgrade seeding.
Update CLAUDE.md with cumulative manifest documentation.

Files: src/lib/writer.ts, tests/writer.test.ts,
       tests/writer-profiles.test.ts, CLAUDE.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 20:54:41 +02:00
“mkczarkowski” 7c80b292f9 feat(cumulative-manifest): manifest schema extension (p1)
Add LessonFilesEntry type, lessons? field on CliManifest, isManifest()
validation for lessons, and buildUnionFiles() helper. Includes frame
brief, plan, and plan-brief for the change.

Files: src/lib/manifest.ts, tests/manifest.test.ts,
       context/changes/cumulative-manifest/{change,frame,plan,plan-brief}.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 20:49:19 +02:00
“mkczarkowski” 632a946c93 chore(cumulative-manifest): add research for folding into v3
Analysis of how cumulative per-lesson tracking integrates with
user-edit-protection's v3 manifest, proposed schema shape, upgrade
paths, computeRemovals() rewrite strategy, and interaction matrix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 19:06:53 +02:00
“mkczarkowski” 134388a637 docs(user-edit-protection): close out plan + document writer conflict detection (epilogue)
- Update CLAUDE.md with conflict detection, manifest v3, and removal tracking docs
- Set change.md status to implemented
- Write final SHA references into plan progress section

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 18:29:47 +02:00
“mkczarkowski” e0b122c8a2 test(user-edit-protection): comprehensive behavior tests (p4)
- Conflict detection: clean update, user edit, matching edit, each resolution
- v2 manifest upgrade: false positive on diff, clean match, v3 upgrade, 3-way after upgrade
- Removal tracking: skill/prompt removals, empty on fresh, dry-run populates
- Hash persistence: stored after apply, preserved on skip, updated on overwrite/save_user
- Non-TTY conflict resolver: always skips without prompting
- Update get-command test types for new counts.removals field

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 18:28:52 +02:00
“mkczarkowski” 802ea46a63 feat(user-edit-protection): interactive prompts + output rendering (p3)
- Create conflict-prompt.ts with TTY/non-TTY conflict resolver factory
- Wire createConflictResolver and showUpgradeNotice into get command
- Add v2 manifest upgrade detection before applyBundle
- Render [removed] lines for skill/prompt/config removals
- Render conflict-specific action labels (conflict: overwritten/saved .user/skipped)
- Add removals to JSON output envelope with counts.removals
- Update get-command test for new counts shape

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 18:23:59 +02:00
“mkczarkowski” 536ccf6728 feat(user-edit-protection): writer three-way detection + removal tracking (p2)
- Make applyBundle() async with ConflictResolver callback injection
- Three-way conflict detection via stored content hashes in manifest
- Conflict resolutions: overwrite, save-as-.user.<ext>, skip
- Track removals in WriteResult.removals for downstream rendering
- Store per-file contentHashes and promptHashes in v3 manifest
- Update all tests for async applyBundle (writer + writer-profiles)
- Await applyBundle in get.ts command

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 18:21:22 +02:00
“mkczarkowski” ed64a987e1 feat(user-edit-protection): manifest v3 schema + contentHash utility (p1)
- Bump MANIFEST_VERSION to 3 with optional contentHashes/promptHashes fields
- Add contentHash() SHA-256 utility in manifest.ts
- isManifest() accepts both v2 and v3 for backward compat
- Update test assertions for v3 manifest version

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-27 18:16:40 +02:00
“mkczarkowski” 06d841f27a fix(e2e): review fixes — kill timer, fetch check, temp cleanup, earlyExit race
- cli.ts: add 60s kill timer to spawnCli, export cleanupTempDirs()
- auth-flow.test.ts: add earlyExit Promise.race + callback response check
- auth-setup.ts: check callback response status
- doctor.test.ts: use getE2EEnv().testEmail instead of hardcoded string
- all test files: add afterAll(cleanupTempDirs) hooks
- reviews/impl-review.md: save full review report

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 15:31:42 +02:00
“mkczarkowski” 3ce2819345 chore(e2e): close out plan (epilogue)
- plan.md: write SHA e95e9a0 to phase 5 progress rows
- change.md: status → implemented

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 15:18:04 +02:00
“mkczarkowski” e95e9a0c78 feat(e2e): CI workflow — e2e jobs and Windows smoke tests (p5)
- .github/workflows/ci.yml: add e2e + e2e-windows jobs with Resend secrets,
  extend check-windows with build:binary + smoke tests
- docs/reference/platform-support.md: update CI testing table to match reality
- context/changes/e2e/plan.md: mark phase 5 automated steps complete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 15:16:12 +02:00
“mkczarkowski” b12e8ff572 feat(e2e): authenticated command tests — doctor, list, get (p4)
Files: tests/e2e/doctor.test.ts, tests/e2e/list.test.ts,
tests/e2e/get.test.ts, tests/e2e/support/auth-setup.ts,
context/changes/e2e/plan.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 15:08:27 +02:00
“mkczarkowski” d97ed75678 feat(e2e): auth flow e2e test with Resend magic-link verification (p3)
Files: tests/e2e/auth-flow.test.ts, tests/e2e/support/auth-setup.ts,
context/changes/e2e/plan.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 14:49:37 +02:00
“mkczarkowski” 9ec3798294 feat(e2e): auth-free e2e tests — global flags and unauthenticated auth (p2)
Files: tests/e2e/global-flags.test.ts, tests/e2e/auth-no-credentials.test.ts,
context/changes/e2e/plan.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 14:36:09 +02:00
“mkczarkowski” 40454c4eca feat(e2e): e2e infrastructure — spawn helper, Resend utility, env config (p1)
Files: tests/e2e/support/cli.ts, tests/e2e/support/env.ts,
tests/e2e/support/resend-magic-links.ts, tests/e2e/.env.test.example,
.gitignore, context/changes/e2e/{change,research,plan}.md

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 14:33:13 +02:00